【问题标题】:SSIS: rows failure when loading data from Excel source to OLE DB destinationSSIS:将数据从 Excel 源加载到 OLE DB 目标时出现行故障
【发布时间】:2020-06-27 05:46:31
【问题描述】:

我对此很陌生。我正在尝试使用 SSIS 包将 Excel 文件(从 SQL Server 表中复制并保存)导入 SQL Server。

这是我创建 excel 文件的方式:

CREATE TABLE #drivers_source 
(
    FirstName NVARCHAR(255) NOT NULL, 
    LastName NVARCHAR(255) NOT NULL, 
    CarMake NVARCHAR(255) NOT NULL, 
    License NVARCHAR(255) NOT NULL, 
    State NVARCHAR(255) NOT NULL
)

INSERT INTO #drivers_source 
VALUES ('Amy', 'Ashley', 'Toyota', '15629686', 'New York'),
       ('Bob', 'Burns', 'Ford', '25448665', 'Washington'),
       ('Cindy', 'Cody', 'Honda','370659CA', 'California'),
       ('Dave', 'Doe', 'Audi','45988718', 'Texas');

SELECT * 
FROM #drivers_source;

我将 #drivers_source 中的数据(带标题)复制到 Excel 文件中并保存。

这就是我创建目标表的方式:

CREATE TABLE dbo.drivers_destination 
(
    FirstName NVARCHAR(255) NOT NULL, 
    LastName NVARCHAR(255) NOT NULL, 
    CarMake NVARCHAR(255) NOT NULL, 
    License NVARCHAR(255) NOT NULL, 
    State NVARCHAR(255) NOT NULL
);

我创建了一个带有 Excel 源和 OLEDB 目标的 SSIS 包,运行该包,发现只有前两行成功插入。我花了几个小时试图找出原因,但仍然没有任何线索。

任何关于为什么会发生此错误以及如何解决此错误(不影响源数据)的想法将不胜感激!

【问题讨论】:

  • 运行此脚本后是否收到任何错误或消息

标签: sql-server ssis


【解决方案1】:

检查 Excel Source 组件的配置。听起来“类型猜测”已配置为根据前两行猜测列类型 - 默认TypeGuessRows 设置通常为 8。

在这种情况下,它会根据前两个值 1562968625448665License 列视为 int 类型,然后在尝试将 370659CA 转换为 int 时出现转换错误.

在 Excel 源的输出列中确认 License 列已配置为使用 DataType String [DT_STR]Unicode string [DT_WSTR] 而不是 Four-byte signed integer [DT_I4] 之类的东西。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-11-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-26
    • 1970-01-01
    相关资源
    最近更新 更多