【问题标题】:BULK INSERT from datafile causes error on datetime type数据文件中的 BULK INSERT 导致日期时间类型错误
【发布时间】:2014-01-28 15:47:22
【问题描述】:

我有一个数据文件,其中包含 (yyyy mm dd) 格式的日期时间字段。 我创建了一个 bcp 格式文件来导入数据,但是在运行语句时,我得到一个错误 第 1 行第 16 列(ReleaseDate)的批量加载数据转换错误(指定代码页的类型不匹配或无效字符)。

如何告诉 bcp 实用程序以 (yyyy mm dd) 格式处理字段或将格式转换为 sql server 期望的格式?

【问题讨论】:

  • 将其导入varchar列,然后在sql server中进行字符串操作会省去很多麻烦。
  • 我以前做过,它有效。它适用于 decimal(8,3) 类型,但不适用于 'bigint' 类型。我只是想知道是否有直接的方法来做到这一点!

标签: sql-server bulkinsert bcp


【解决方案1】:

我有两个问题。

首先,请确保您使用的是 ASCII 代码页,而不是两个字节的 UNICODE。

其次,如果 BCP 出现问题,您可以尝试使用格式文件。

如果这不起作用,请从 ETL 更改为 Extract Load Translate (ELT)。

从文件批量加载到表中的 varchar() 列。使用存储过程转换为正确的数据类型。

【讨论】:

  • BULK load from file to VARCHAR();这通常可以解决问题,因为它甚至允许错误的值,并让您有机会在最终输入到最终目的地之前清除错误数据。
  • 我更喜欢使用 SSIS,因为我可以将错误的行定向到医院表以供以后处理或查看。只是我的偏好。但我过去都做过。
猜你喜欢
  • 1970-01-01
  • 2020-01-05
  • 2011-10-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多