我正在使用批量插入将csv导入db。
这是逗号分隔的csv文件。没有所有字段的文本限定符。

但是某些字段可能会将逗号作为数据的一部分。
例如,ADDRESS字段值。这些值用双引号代替。
仅当字段值中包含逗号时,这些双引号才会出现,否则该值不会被双引号替代。
因此,在某些行中,ADDRESS值用双引号代替,但在其他行中则没有。
有没有一种方法可以在批量插入命令中指定文本限定符?

我尝试了带格式文件选项的批量插入。

BULK INSERT Test_Imported FROM 'C:\test.csv'
WITH (FIRSTROW=0,FIELDTERMINATOR = ',',ROWTERMINATOR = '\n',FORMATFILE = 'C:\test.Fmt')


但是我无法在格式文件中提及双引号作为可选的文本限定符。

PS:
此函数实际上是用c#编写的更大模块的一部分。
从c#调用批量插入命令。

CSV文件是通过另一个自动化系统的电子邮件发送的。我无法控制格式
的csv文件。大约有150列。
平均每个csv文件中有12000行。
忘了具体化数据库。它是SQL Server 2005。

最佳答案

不幸的是,您必须对文件进行预处理以使其一致。
SQL批量操作在字段定界符上拆分字符串。

一些选项:


在C#中处理以将引号引起来的逗号更改为管道(|)
将文件分为2个:“和非”文件。仅当同一字段具有“


您说您无法控制格式,但是无法使用...

关于c# - 带有可选文本限定符的批量插入,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1378526/

10-13 08:58