【问题标题】:SQL Server not importing data to tableSQL Server 未将数据导入表
【发布时间】:2015-05-24 10:10:17
【问题描述】:

我正在使用 SQL Server 2008 R2,我正在创建下表,然后尝试通过右键单击数据库名称 -> 任务 -> 导入数据来导入数据。在进行导入设置时,我在列设置中分配了相应的数据类型。我已经查看了源文件,没有发现任何会导致导入过程出错的突出内容。我在表格脚本下包含了我收到的错误。

对错误有什么想法吗?或者为什么我不能从表中导入数据?

谢谢!

CREATE TABLE customer
(
id integer NOT NULL PRIMARY KEY,
username varchar(128) NOT NULL,
email_address varchar(128) NOT NULL,
date_of_birth date NOT NULL,
different_mailing_address bit,
employment_status varchar(255),
first_name varchar(128) NOT NULL,
last_name varchar(128) NOT NULL,
middle_name varchar(128),
gender varchar(255),
months_at_current_address integer,
months_at_current_employment integer,
months_at_previous_address integer,
mothers_maiden_name varchar(255) NOT NULL,
cellular_phone_number varchar(255),
daytime_phone_number varchar(255),
evening_phone_number varchar(255),
home_phone_number varchar(255),
work_phone_number varchar(255),
social_security_number varchar(255) NOT NULL,
special_employer_group varchar(255),
stated_lead_source  varchar(255),
stated_lead_source_desc varchar(255),
us_citizenship_status varchar(255),
us_non_immigrant_classification varchar(255),
us_tax_residency varchar(255),
existing_customer bit,
existing_customer_number varchar(255),
credit_report_fk integer,
current_home_address_fk integer,
expense_fk integer,
family_info_fk integer,
housing_info_fk integer,
id_verification_fk integer,
income_fk integer,
mailing_address_fk integer,
previous_employment_fk integer,
previous_home_address_fk integer,
primary_employment_fk integer,
worksheet_fk integer,
linked_dda_fk integer,
portfolio_id varchar(255),
portfolio_line_number varchar(255),
created datetime,
last_update datetime
)

消息

错误 0xc02020a1:数据流任务 1:数据转换失败。列“列 0”的数据转换返回状态值 2 和状态文本“由于可能丢失数据,无法转换值。”。

错误 0xc0209029:数据流任务 1:SSIS 错误代码 DTS_E_INDUCEDTRANSFORMFAILUREONERROR。 “输出列“列 0”(10)”失败,因为发生了错误代码 0xC0209084,并且“输出列“列 0”(10)”上的错误行处置指定错误失败。指定组件的指定对象发生错误。在此之前可能会发布错误消息,其中包含有关失败的更多信息。

错误 0xc0202092:数据流任务 1:处理数据行 1 上的文件“Y:\ANDERA\customer.csv”时出错。

错误 0xc0047038:数据流任务 1:SSIS 错误代码 DTS_E_PRIMEOUTPUTFAILED。组件“Source - customer_csv”(1) 上的 PrimeOutput 方法返回错误代码 0xC0202092。当管道引擎调用 PrimeOutput() 时,组件返回了失败代码。失败代码的含义由组件定义,但错误是致命的并且管道停止执行。在此之前可能会发布错误消息,其中包含有关失败的更多信息。

【问题讨论】:

  • 文件的第一行数据是什么?
  • 也许向我们展示一行失败的数据。

标签: sql database sql-server-2008-r2 sqldatatypes data-import


【解决方案1】:

为了更有效的帮助,查看 csv 的一些测试行可能很有用。我试试..

我在您的 SQL 脚本中看到使用此导入函数(许多特定数据类型)可能会产生错误的几个约束。因此,您必须仔细检查您的 csv。 请记住,当您从 csv 导入时,总是会在某些字符串之间转换为 SQL 中的特定数据类型,因此您必须确保字符串的格式正确以便转换.. 首先,您必须控制数据和日期时间字段。是不是用SQL可以成功转换的方式写的? 然后,有许多 NOT NULL 字段,它们是否正确填充在您的 CSV 中? 是 CSV 实整数上的整数字段(例如 1 、 2 而不是 1.0 等)。

如果您打算执行此任务一次,那么如果您将数据导入尽可能简单的表中(更多 varchar(255) 字段作为可能),然后您可以在 SQL Server 中进行转换/转换您想要的数据类型中的所有字段,然后使用语句 (SELECT INTO),您可以将该数据复制到您的复杂表中。通过这种方式,您可以更好地测试问题所在。

【讨论】:

    【解决方案2】:

    由于从一种数据类型转换为另一种数据类型,这听起来像是您截断的数据。查看您的 CSV 数据。文本可能比您提供的要长,或者这些字段之一中可能有十进制值。听起来可能是第二个。

    您可以尝试通过拆分文件并逐段导入来查找有问题的字段,直到找到导致错误的行。

    【讨论】:

      猜你喜欢
      • 2013-09-08
      • 1970-01-01
      • 1970-01-01
      • 2011-09-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多