MSSQL批量插入CSV - 多列包含逗号

时间:2015-06-09 13:46:40

标签: sql-server sql-server-2008 csv bulkinsert bcp

我正在运行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。

谢谢!

1 个答案:

答案 0 :(得分:0)

您可以使用格式文件指定带批量插入的文本限定符。这个相关的StackOverflow问题有关于如何执行此操作的非常好的文档:

Bulk insert with text qualifier in SQL Server