我有一个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
文件包含的行数越多,插入到表中的机会就越随机。
我的应用程序中有列的值始终为 4 位数字,例如“0100”或“1230”。示例之一可能是Merchant Category Code。
暂时,我已经将这个列的类型设置为char (4)
. 我有很多这种类型的专栏。这些类型的列之一也包含在非聚集UNIQUE
索引中。我想为这种类型的专栏建立一种方法。
通过在应用程序中添加或 添加到开头来使用char (4)
或可能更好吗?smallint
' '
0
包含这些列的表已分区,将包含大约 3 亿条记录。UPDATE
可能不会在这种类型的列上执行。它们也不会出现在WHERE
(有时可能出现在临时报告中)。
我应该选择哪种数据类型?
它就像一个邮政编码,它可以是数字,但你必须存储前导零
确切地。我在考虑在性能方面什么是更好的方法。还必须考虑到,如果我将其存储为smallint
,应用程序代码必须将其解析为字符串并添加前导零。