【问题标题】:Bulk insert error, when loading date format加载日期格式时批量插入错误
【发布时间】:2016-12-19 13:16:27
【问题描述】:

我收到大量 .csv 文件,我需要将它们批量插入到 SQL 表中。

在 csv 文件中,日期格式为 YYYY-MM-DD 和单独的时间列,格式为 HH:MM:SS。

"2016-11-24";"01:00:16"

在我的表中,我创建了两列作为日期数据类型和时间数据类型,并使用这段代码插入:

BULK
INSERT [dbo].[table_name]
FROM 'filepath'
WITH
(
FIRSTROW = 2,
FIELDTERMINATOR = ';',
ROWTERMINATOR = '\n'
)

但我收到此错误:

Msg 4864, Level 16, State 1, Line 37
Bulk load data conversion error (type mismatch or invalid character for the     specified codepage) for row 2, column 1 (date).

如果我使用普通的 insert into 语句,它可以工作...

【问题讨论】:

  • 你确定日期是 yyyy-mm-dd 而不是 yyyy/mm/dd
  • 是的,它就是这样到达的。 2016-12-19
  • 代码页也可以吗?看起来你有一个字符映射不匹配,不适合所选的 CP。您的 csv 是否使用不同的编码?
  • 嗨。 "2016-11-24";"01:00:16" 的值是一个例子吗?还是这些来自无法导入的行?
  • 取自导入失败的行。

标签: sql sql-server bulkinsert


【解决方案1】:

首先检查您的物理表日期和时间列数据类型。它具有日期时间格式,这意味着首先将所有 .csv 文件数据移动到具有 varchar 数据类型的临时表中。插入临时表后,使用日期时间转换移动到物理表。

【讨论】:

  • 我可以一步完成吗,因为我每 10 分钟就会获得需要插入的新数据。
  • 可以,写存储过程。首先插入到下一行的临时表移动到物理表
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-10-13
  • 1970-01-01
  • 2012-10-26
  • 2018-11-11
  • 1970-01-01
相关资源
最近更新 更多