小编axd*_*dna的帖子

为什么BULK INSERT按随机顺序插入数据?

我有一个csv包含 350,000 行的文件。想要按照与csv文件中相同的顺序将数据插入到临时表中。我正在尝试BULK INSERT使用:

BULK INSERT ##AllRows
    FROM @FilePath
    WITH
    (
    FIELDTERMINATOR = '\n'
    )
Run Code Online (Sandbox Code Playgroud)

不幸的是,BULK INSERT按随机顺序插入数据。我每次执行的标题都在不同的行中。我在 SQL Server 2016 上运行它。是否有可能在旧版本的 SQL Server 中顺序方式有所不同?

使用该FIRSTROW选项不会将标题识别为文件的第一行。文件没有任何我们可以订购的列。在文件中,标题始终位于第一行。

这可能是巧合,但即使如此FIRSTROW=2,我的标题也有可能出现在表格中。我查了一下。看起来csv文件包含的行数越多,插入到表中的机会就越随机。

sql-server csv bulk-insert

1
推荐指数
1
解决办法
7522
查看次数

char 或 smallint 用于带有数字代码的列?

我的应用程序中有列的值始终为 4 位数字,例如“0100”或“1230”。示例之一可能是Merchant Category Code

暂时,我已经将这个列的类型设置为char (4). 我有很多这种类型的专栏。这些类型的列之一也包含在非聚集UNIQUE索引中。我想为这种类型的专栏建立一种方法。

通过在应用程序中添加或 添加到开头来使用char (4)或可能更好吗?smallint' '0

包含这些列的表已分区,将包含大约 3 亿条记录。UPDATE可能不会在这种类型的列上执行。它们也不会出现在WHERE(有时可能出现在临时报告中)。

我应该选择哪种数据类型?

它就像一个邮政编码,它可以是数字,但你必须存储前导零

确切地。我在考虑在性能方面什么是更好的方法。还必须考虑到,如果我将其存储为smallint,应用程序代码必须将其解析为字符串并添加前导零。

sql-server datatypes physical-design sql-server-2019

0
推荐指数
1
解决办法
222
查看次数