【问题标题】:Importing CSV to SQL Server with text column > 8000 characters将文本列 > 8000 个字符的 CSV 导入 SQL Server
【发布时间】:2013-09-24 20:32:09
【问题描述】:

我正在尝试使用 SQL Server management studio 2012 导入/导出向导将包含两列(sku、描述)的 csv 文件导入 SQL Server 2008。因为描述列肯定有超过 8000 个字符的行,所以我在选择 csv 数据源时进入高级选项卡,然后单击描述列,然后单击“建议类型”。然后它为 OutPutColumnWidth 属性输入 16718。显然那里有一段很长的描述。

它生成的sql是:

CREATE TABLE [dbo].[mag-prod-descriptions1] (
[sku] varchar(7),
[descrip] varchar(16718)
)

但是,当我执行导入时,我收到错误“无法连接源组件。错误 0xc0204016: SSIS.Pipeline: The "Source - mag-prod-descriptions1_csv.Outputs[Flat File Source Output].Columns[Column 1]" 的长度无效。长度必须在 0 到 8000 之间。"

如果我将 OutputColumnWidth 属性更改为 8000,则会收到一条错误消息,指出该列已被截断。我赢不了。

如何获得允许我导入超过 8000 个字符的单元格的东西?

【问题讨论】:

  • 我也遇到过类似的情况,仅在 Oracle 中,我记得必须更改一些设置以允许更大的字段,然后进行导入。另一种选择是说截断是可以的,但我也不记得是怎么做到的。
  • 我曾尝试将截断错误设置更改为忽略而不是失败,但仍然失败。 :-(

标签: sql-server import ssms sqldatatypes truncation


【解决方案1】:

确认。终于明白了。答案是对源文件中的大列使用 Text Stream 数据类型。

【讨论】:

    【解决方案2】:

    我看到列大小错误的导入问题,我在想...这可能是 Unicode 问题吗?在创建表时尝试使用 nvarchar 而不是 varchar。

    参考:Unicode Works Better With SSIS

    【讨论】:

    • 问题不在于目标列的大小。这是 sql 在源中的一列中不允许超过 8000 个字符。不过我已经想通了。源的数据类型用作文本流。
    猜你喜欢
    • 2013-02-20
    • 2019-09-06
    • 1970-01-01
    • 2012-06-16
    • 1970-01-01
    • 2011-03-27
    • 2021-02-04
    • 2012-04-05
    相关资源
    最近更新 更多