当csv文件列值包含字段终止符值时,如何避免批量插入SQL中的异常

时间:2017-04-28 10:47:55

标签: c# sql-server csv bulkinsert

enter image description here我有一个包含少量列的csv文件,地址列包含以下值:

“詹姆斯街,绿色公园酒店路,NewJersy”

这是我的批量插入脚本;当地址字段没有“,”时它工作正常。由于与脚本中的FieldTerminator值匹配,它将处理地址字段值逗号作为字段终止符,因此值的剩余部分将移动到下一个字段。作为客户给定的csv文件,我们无法对其进行任何更改。所以如何制作他们在地址栏中没有遗漏逗号的情况下工作

提前谢谢。 enter image description here

1 个答案:

答案 0 :(得分:0)

试试这个,

Error file property

  BULK INSERT dbo.NPI_tbl
    FROM 'd:\npiData\yourfilename.csv'
    WITH
    (
    FIRSTROW = 2,
    FIELDTERMINATOR = ',',  --CSV field delimiter
    ROWTERMINATOR = '\n',   --Use to shift the control to next row
    ERRORFILE = 'd:\npiData\ErrorFile.csv',
    TABLOCK
    )

哦抱歉,然后使用OPENROWSET它允许您选择然后插入。 所以在选择之后你可以清理数据然后插入

INSERT INTO 
  dbo.NPI_tbl
SELECT *
FROM 
  OPENROWSET(BULK 'd:\npiData\yourfilename.csv',
  FORMATFILE = 'd:\npiData\npiFormat_c.fmt'
  ) AS e;