【问题标题】:Import Issue with a csv file into SQL Server 2008 table将 csv 文件的问题导入 SQL Server 2008 表
【发布时间】:2013-03-14 20:55:56
【问题描述】:

我正在使用 SQL Server 导入和导出向导从 csv 文件导入数据以附加到我现有的 SQL Server 表中。

因此,要将 csv 文件中的数据附加到我的 SQL Server 表中,在Choose a Data Source 窗口中,我要确保我的 csv 数据源中的每一列都具有与我的 SQL Server 表列相同的数据类型。

但是,我在导入时总是会出错。

错误 0xc02020a1:数据流任务 1:数据转换失败。数据 “成熟度(小时)”列的转换返回状态值 2 和状态 文本“由于潜在的损失,无法转换该值 数据。”。(SQL Server 导入和导出向导)

错误 0xc0209029:数据流任务 1:SSIS 错误代码 DTS_E_INDUCEDTRANSFORMFAILUREON错误。 “输出列”成熟度 (小时)" (42)" 失败,因为发生错误代码 0xC0209084,并且 “输出列“成熟度(小时)”(42)上的错误行处置指定 错误失败。指定对象发生错误 指定的组件。在此之前可能会发布错误消息 提供有关失败的更多信息。 (SQL Server 导入和 导出向导)

我的 SQL Server 表有 Maturity(小时)作为 int 数据类型。

对于我的 csv 文件,在 SQL Server 导出/导入向导中,我为 Maturity(小时)选择了 DT_I4,这相当于 SQL Server 中的 int 数据类型。在过去的 3 个小时里,我仍然无法摆脱该错误。

关于如何解决此问题的任何线索?

【问题讨论】:

  • 除了数据类型之外,所有字段的长度是否也相同?
  • 您好罗恩,感谢您的评论。从确保 SQL 端和 csv 文件中每个字符串字段的字段大小开始,如何确保 int 列的字段大小?
  • 我不确定您的 csv 文件中的值是否必须严格为 int。我会尝试将列类型更改为数字并指定精度。
  • 我建议你分而治之你的CSV文件,找到有错误的数据行。您可能会发现一些错误数据,其数字太大而无法放入 INT4
  • 2.将错误行重定向到文本文件,而不是拆分源文件。

标签: sql-server-2008 ssis sql-import-wizard


【解决方案1】:

如果任何字段有任何逗号,只需查看 csv 文件(如果您使用逗号作为列分隔符或双引号(如果您使用双引号作为文本限定符)。您的问题应该属于上述问题2个场景。

注意:我将其作为答案,因为我无法对您的问题发表评论。

【讨论】:

  • 我使用双引号作为文本限定符,在通过分治法追踪大量数据时,我发现很少有行有双引号。感谢您的笼统回答。
  • 你能告诉我你是如何处理这个错误的吗?您是跳过了这些记录还是进行了任何其他修复?
  • 我曾经从我的一个团队获取 csv 文件,我有一份工作将其导入到我的 sql 表中。我要求我的团队向我发送干净的数据。我希望团队负责给我正确的来源。 :)
猜你喜欢
  • 1970-01-01
  • 2011-02-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-01
  • 1970-01-01
  • 2013-12-21
相关资源
最近更新 更多