适用于普通COMMA和“COMMA”的OPENROWSET BULK的CSV FormatFile

时间:2012-07-18 21:37:35

标签: sql sql-server sql-server-2008 bulkinsert openrowset

  

可能重复:
  SQL Server Bulk insert of CSV file with inconsistent quotes

我已获得一百万行CSV导入SQL Server,基本上是这样的:

“A”,B,C,d, “E”, “F”

过去我已经使用OPENROWSET BULK和一个格式文件来完成它,该格式文件适用于CSV文件,没有任何数据或带引号的所有列的引号。

人们通常会做什么来处理像这样的CSV和一些FormatFile,其中有些引号是圆形而某些字段不是?

注意:我将与另一个表交叉加入,而不是从CSV导入所有coumns,这就是我使用OpenRowset Bulk的原因(我也无法访问服务器上的bcp)。

2 个答案:

答案 0 :(得分:2)

SQL Server Bulk insert of CSV file with inconsistent quotes中提供的解决方案建议预处理文件。根据您的示例,您可以使用以下更新语句来更正数据,但这仅在引号不包含逗号的数据时才有效。

UPDATE  @table
SET     value = CASE WHEN LEFT(value, 1) = '"'
                          AND RIGHT(value, 1) = '"'
                     THEN SUBSTRING(value, 2, LEN(value) - 2)
                     ELSE value
                END

答案 1 :(得分:0)

您可以先找到并替换文本文件中的所有双引号。然后您可以使用逗号(,)作为分隔符进行正常的批量插入。