sql-server - 将字段中带有换行符的 CSV 批量插入到 SQL Server 中

标签 sql-server csv bulkinsert

我有一个如下所示的 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/

相关文章:

sql-server - 获取当前工作日从周一到周日

.net - 有没有办法以编程方式将 SQL Server 查询计划转换为图像?

Java、Csv 到 json、jackson-dataformat-csv

python - 如何将 spark 数据帧保存到 HDFS 上的 csv?

用于批量插入查询的php绑定(bind)动态变量数

sql-server - SQL 注入(inject) : isn't replace ("' ", "' '") 足够好了吗?

linux - 如何在 CSV 中获取一行的散列并将其添加为最后一列

python - 批量插入到 MongoDB 中的 GridFS

java - PostgreSQL:如何使用循环将数据插入数据库表?

sql - Microsoft SQL Server Native Client 10.0 登录超时已过期