SQLServer导入excel
1、选择要导入的数据库—任务—导入数据,如图:
2、选择excel数据源—浏览文件。注意如果excel中首行数据为字段,应勾选“首行包含列名称”。
3、选择数据库—选择源表和原视图:
注意,如果不选则目标,则会在数据库中自动生成同名的表,并把数据导入进去。
4、如不需保存SSIS包,直接点击完成即可。
不出错误到此以导入完毕,但是实际上并非如此,错误示例:
操作已停止…
– 正在初始化数据流任务 (成功)
– 正在初始化连接 (成功)
– 正在设置 SQL 命令 (成功)
– 正在设置源连接 (成功)
– 正在设置目标连接 (成功)
– 正在验证 (成功)
– 准备执行 (成功)
– 执行之前 (成功)
– 正在执行 (成功)
– 正在复制到 [dbo].[t_Student] (错误)
消息
错误 0xc0202009: 数据流任务 1: SSIS 错误代码 DTS_E_OLEDBERROR。出现 OLE DB 错误。错误代码: 0x80004005。
已获得 OLE DB 记录。源:“Microsoft SQL Server Native Client 10.0” Hresult: 0x80004005 说明:“未指定的错误”。
(SQL Server 导入和导出向导)
错误 0xc020901c: 数据流任务 1: 输入“Destination Input”(60) 上的 输入列“studentId”(127) 出错。返回的列状态是:“该值违反了该列的完整性约束。”。
(SQL Server 导入和导出向导)
错误 0xc0209029: 数据流任务 1: SSIS 错误代码 DTS_E_INDUCEDTRANSFORMFAILUREONERROR。“输入“Destination Input”(60)”失败,错误代码为 0xC020907D,而且针对“输入“Destination Input”(60)”的错误行处理设置指定一旦出错就失败。在指定组件的指定对象上出错。可能在此之前已经发出错误消息,提供了有关失败的详细信息。
(SQL Server 导入和导出向导)
错误 0xc0047022: 数据流任务 1: SSIS 错误代码 DTS_E_PROCESSINPUTFAILED。处理输入“Destination Input”(60)时,组件“目标 – t_Student”(47)的 ProcessInput 方法失败,错误代码为 0xC0209029。标识的这个组件从 ProcessInput 方法返回了一个错误。虽然该错误是此组件特有的,但却是致命的,将导致数据流任务停止运行。可能在此之前已经发出错误消息,提供了有关失败的详细信息。
(SQL Server 导入和导出向导)
– 执行之后 (成功)
消息
信息 0x402090df: 数据流任务 1: “组件“目标 – t_Student”(47)”中的数据插入操作的最终提交已开始。
(SQL Server 导入和导出向导)
信息 0x402090e0: 数据流任务 1: “组件“目标 – t_Student”(47)”中的数据插入操作的最终提交已结束。
(SQL Server 导入和导出向导)
信息 0x4004300b: 数据流任务 1: “组件“目标 – t_Student”(47)”已写入 0 行。
(SQL Server 导入和导出向导)
就个人经验而言,一般提示最有用能直观展示非系统问题的是第二个错误提示,如上述:“错误 0xc020901c: 数据流任务 1: 输入“Destination Input”(60) 上的 输入列“studentId”(127) 出错。返回的列状态是:“该值违反了该列的完整性约束。”
常见问题:
1、外键约束,例如:已获得 OLE DB 记录。源:“Microsoft SQL Server Native Client 10.0” Hresult: 0x80004005 说明:“INSERT 语句与 FOREIGN KEY 约束”FK_t_Student_t_Classes”冲突。该冲突发生于数据库”CollegeSystemVBTest”,表”dbo.t_Classes”, column ‘classId’。”一般外键约束禁止更新或插入会触发此问题,解决方法,详见我的博客《简简单单说外键和级联》。
2、列的完整性约束,例如:“错误 0xc020901c: 数据流任务 1: 输入“Destination Input”(60) 上的 输入列“studentId”(127) 出错。返回的列状态是:“该值违反了该列的完整性约束。”一般主键约束会触发此问题,例如导入的excel中主键重复。想想当时因为是由2000多行学生信息,转专业的学生、源数据错误都会产生重复行,当时想的办法是先导入Access,查找重复列然后再删除,虽能解决,但是效率太低,更好的解决方法,excel自带去除重复列功能,进入excel—数据—删除重复项。
3、映射列多余,SQLserver虽然可以智能识别映射列,但是成功率并非100%,所以可以在导入excel第三步骤中编辑映射列或是选择生成映射列。
4、数据长度,也十分常见,excel单元格默认字符长度最大值为255,超过255即出错。
本文来自投稿,不代表天一生活立场,如若转载,请注明出处:http://tiyigo.com/it/21984.html