我正在尝试将一个扁平文件导入到oledb目标sql server数据库中。
这是困扰我的字段:
这是该扁平文件连接的属性,特别是字段:
这是错误信息:
[源-18942979103_txt [424]] 错误: 数据转换失败。列“recipient-name”的数据转换返回了状态值4和状态文本“文本被截断或一个或多个字符在目标代码页中没有匹配项。”。
我做错了什么?
我正在尝试将一个扁平文件导入到oledb目标sql server数据库中。
这是困扰我的字段:
这是该扁平文件连接的属性,特别是字段:
这是错误信息:
[源-18942979103_txt [424]] 错误: 数据转换失败。列“recipient-name”的数据转换返回了状态值4和状态文本“文本被截断或一个或多个字符在目标代码页中没有匹配项。”。
我做错了什么?
在尝试增加长度或者将数据类型更改为文本后仍然失败,我通过创建XLSX文件并导入解决了这个问题。它准确地检测到了数据类型,而不是将所有列设置为varchar(50)
。结果发现对于该列来说,nvarchar(255)
也可以解决问题。
SQL Server可能会为您建议正确的数据类型(即使默认情况下它没有选择正确的类型)- 点击“建议类型”按钮(如上面的截图所示),可以让SQL Server扫描源并建议一个数据类型,用于解决引发错误的字段。在我的情况下,选择扫描20000行以生成建议,并使用生成的建议数据类型解决了问题。
在导入特定列的数据时,您需要增加该列的长度。
选择数据源 >> 高级选项 >> 将该列的默认长度从50增加到200或更多。
SQL管理工具的数据导入会查看前几行以确定源数据规格。
将记录移动,使最长的文本在顶部。
CAST
解决了它。我还利用了一个查询,将源列适应为varchar
并避免了无用的空格:CAST(RTRIM(LTRIM(COLUMN_NAME)) AS VARCHAR(60) CCSID UNICODE
FOR SBCS DATA) COLUMN_NAME