【问题标题】:Import Double Quotes Qualified CSV File With BULK INSERT Not Working使用 BULK INSERT 导入双引号限定的 CSV 文件不起作用
【发布时间】:2017-12-26 09:42:26
【问题描述】:
BULK INSERT dbo.Data_NEW FROM 'D:\Data.csv' 
WITH ( FIELDTERMINATOR ='","',ROWTERMINATOR ='"\n"',FirstRow=1);

我在使用双引号 csv 文件运行批量插入时遇到问题。你能帮我解决这个问题吗?

csv 文件有以下内容:

"设备","Pat 设备","服务器","位置","时间","值","单位","状态" "101.162.57.1​​98-Slave56","localhost(数据中心)","输出 真","","2017 年 11 月 14 日 14:58:00","88.8","kW","""101.162.57.1​​98- Slave56","localhost(数据中心)","输出真","","2017 年 11 月 14 日 16:58:00","88.7","kW","""101.162.57.1​​98- Slave56","localhost ( 数据 中心)","输出真","","2017 年 11 月 14 日 18:58:00","88.5","kW","" "101.162.57.1​​98-Slave56","localhost(数据中心)","输出 真","","2017 年 11 月 14 日 20:58:00","89.0","kW",""

【问题讨论】:

  • 有什么问题?有没有错误?
  • 请提供错误信息,对我们更有用。
  • 您必须使用批量插入导入文件吗?如果不是,您应该考虑使用 Powershell,您可以使用 .net 对象来导入和验证数据。 fpweb.net/blog/powershell-tips-working-with-csv-files
  • 那篇博文是 404ed

标签: sql-server csv bulkinsert


【解决方案1】:
  1. 您应该设置 FirstRow=2 或从 csv 文件中删除第一行

  2. 将行终止符更改为:ROWTERMINATOR ='\n'

  3. 您应该删除 csv 文件每一行中的第一个和最后一个双引号。

更新: 尝试使用'0x0a' 而不是'\n' 作为行终止符。 如果该操作不能解决问题,请创建一个格式文件来描述表和 csv 文件的列之间的确切关系。以下链接将对您有所帮助:

Non-XML Format Files

Create a Format File

然后使用这个命令:

BULK INSERT dbo.Data_NEW FROM 'D:\Data.csv' 
WITH (FORMATFILE = 'D:\yourFMT.fmt');

【讨论】:

  • 我进行了建议的更改。仍然出现错误:“消息 4866,级别 16,状态 8,第 1 行批量加载失败。数据文件中第 1 行第 8 列的列太长。验证字段终止符和行终止符是否指定正确。”
  • dbo.Data_NEW 表中“Status”字段的数据类型是什么?
  • 状态 varchar(250)
猜你喜欢
  • 2013-01-13
  • 1970-01-01
  • 2014-09-23
  • 2011-02-14
  • 1970-01-01
  • 2016-11-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多