4

我正在尝试将记录从逗号分隔的平面文件导入 SQL 数据库文件,我得到“文本被截断或目标代码页中的一个或多个字符不匹配”。当源文件在特定字段中有超过 50 个字符时。该字段的目标文件目标是 1000 个字符,因此这应该不是问题。我将其缩小到文本文件中的“A123456789B123456789C123456789D123456789E123456789”确实导入了,而“A123456789B123456789C123456789D123456789E123456789F”抛出了错误。

我怎样才能让它在截断之前允许更多字符?

4

4 回答 4

9

我在第二个答案中找到了答案: Importing CSV file into SQL server... 感谢 Eoan。

最终,在源数据文件的高级编辑器中,在 Input and Output Properties 选项卡上的 External Columns 下,有一个默认为 50 的 Length 属性。将其更改为匹配目标数据库文件就可以了。

于 2012-07-02T16:16:02.300 回答
1

另一个快速解决方案:

如果您有 Microsoft Excel,请将 CSV 保存为 XLSX。而且,导入 XLSX 而不是 CSV 我发现导入向导比 CSV 更能理解 Excel。

于 2013-06-04T07:15:16.193 回答
0

即使我正在导入一个 excel 文件,我也遇到了文本被截断的问题。我发现

SSIS 系统通过检查前 8 行左右来确定 EXCEL 列的数据类型(荒谬)。因此,如果前 8 行全部小于 255 个字符,并且在第 8 行之后有大于 255 个字符的值,则会发生截断错误。

因此解决方法是在有问题的列中放入一个具有较大(> 255 个字符)值的临时行,然后运行集成。完成后,删除临时行。-ryan1999

(在这里查看答案)

我的工作是:

  1. 添加另一列,其中包含应该被截断的列的长度
  2. 将该列从大到小排序
  3. 删除列。

希望这可以帮助某人

于 2014-02-17T10:09:13.663 回答
0

在我的情况下 - 将有问题的行作为第一行移动(如果可以的话,因为 csv/文本文件可能非常大)。

  • 运行预览。
  • Turns out the field had a comma in there, but thankfully it had double quotes showing separation of fields.
  • Went to 'Choose a Data Source" dialog > General, added Text qualifier: " (double-quotes)
于 2015-11-09T15:09:27.557 回答