我有一个如下所示的 csv:
"blah","blah, blah, blah
ect, ect","column 3"
"foo","foo, bar, baz
more stuff on another line", "another column 3"
是否可以将其直接导入到 SQL Server 中?
最佳答案
文件中的每一行都以换行符 (\n) 结尾,但您想要获取的实际行以引号和换行符结尾。将 BULK INSERT 命令中的 ROWTERMINATOR 设置为:
ROWTERMINATOR = '"\n'
编辑:我认为更大的问题是文本中的逗号。 SQL Server 不使用文本框。因此,该行将以逗号分隔,而不检查逗号是否在引号内。
你可以这样做:
BULK INSERT newTable
FROM 'c:\file.txt'
WITH
(
FIELDTERMINATOR ='",',
ROWTERMINATOR = '"\n'
)
这将为您提供以下结果:
col1 | col2 | col3
----------------------------------------------------------------
"blah | "blah, blah, blah ect, ect | "column 3
"foo | "foo, bar, baz more stuff on another line | "another column 3
您所要做的就是去掉每个单元格开头的引号。
例如:
UPDATE newTable
SET col1 = RIGHT(col1,LEN(col1)-1),
col2 = RIGHT(col2,LEN(col2)-1),
col3 = RIGHT(col3,LEN(col3)-1)
我认为您也可以使用bcp utility来做到这一点与 format file
关于sql-server - 将字段中带有换行符的 CSV 批量插入到 SQL Server 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1579235/