在 SSIS excel 数据源中,字符数不超过 255

In SSIS excel datasource not taking more characters than 255

我开发了将多个 excel 文件导入 SQL 的 SSIS 包。现在的问题是 "Excel data source" 检查前几行以确定数据类型,我的备注栏采用了长度为 255 的文本数据类型。

但在某些文件中备注超过 255 个字符。

我查看了一些博客,他们说有意将长文本放在第一行以进行注释,然后 SSIS 会将数据类型确定为 Unicode 文本流。这解决了我的问题,但是当其他文件再次导入时,数据类型再次更改为 255 个字符并出现截断错误。

请告知如何解决此问题。

更新 - 2022-02-04:

以下答案中列出了解决方案和变通方法:

  • Cannot import long text from Excel to SQL Server using SSIS

初始答案:

在数据流任务中,右键单击 Excel Source 组件,进入 Advanced Editor >> 输入和输出属性 选项卡,并在外部列和输出列中手动更改列长度,如下面的屏幕截图所示。

我已经解决了在 SSIS 脚本任务中使用以下代码导入特定列中超过 255 个字符的问题 excel。

        string path = Dts.Variables["User::FileName"].Value.ToString();

        FileStream stream = File.Open(path, FileMode.Open, FileAccess.Read);
        IExcelDataReader excelReader = null;

        excelReader = ExcelReaderFactory.CreateOpenXmlReader(stream);
        DataSet result = excelReader.AsDataSet();
        excelReader.Close();

        var dt = result.Tables[0];

        string CS = "Data Source=localhost;Initial Catalog=Demo;Persist Security Info=True;User ID=sa;Password=; Connect Timeout=200; pooling='true'; Max Pool Size=200";
        // Bulk Copy to SQL Server   
        SqlBulkCopy bulkInsert = new SqlBulkCopy(CS);
        bulkInsert.DestinationTableName = "test";
        bulkInsert.WriteToServer(dt);