我正在运行MSSQL Server Management Studio R2,我有一个包含~30列和~10,000,000行的大型.csv文件。我从大约900个单独的文件中下载了来自互联网源的数据,并将它们连接到一个带有.cmd脚本的文件,所以现在我已准备好插入数据库的完整文件。
不幸的是,多列中的大数字被记录为包含内部逗号的字符串(即"50,000,000"
或"3,972,721"
)。请注意,双引号 包含在文件格式中。 BULK INSERT
认为这些逗号是文本字段分隔符,而不是字符串的一部分。
这是我的插入声明。
BULK INSERT Database.dbo.table
FROM '\\server\filepath\file.csv'
WITH
(
FIELDTERMINATOR = ',',
ROWTERMINATOR = '\n'
);
在我创建的用于保存数据的表格中,有问题的行具有varchar(max)
数据类型,正如我尝试的其他任何内容都会引发错误。
"3,972,721"
的错误输出当前渗透到额外的行中,完全扭曲了表格的其余部分。
ROW1 ROW2 ROW3
"3 972 721"
我希望"3,972,721"
的正确输出为
ROW1
3972721
我正在寻找一种强制BULK INSERT
命令将这些字符串强制转换为int的方法(添加了一些数据点字符串包含+
符号的约束,例如"2,500,000,000+"
)或其他完全插入方法,例如bcp。
谢谢!
答案 0 :(得分:0)
您可以使用格式文件指定带批量插入的文本限定符。这个相关的StackOverflow问题有关于如何执行此操作的非常好的文档: