【发布时间】:2024-01-17 19:24:01
【问题描述】:
在尝试从一组 Excel 电子表格中导出数据时,我遇到了这两个错误中的任何一个。 简化场景:
- 两个包含 1 个文本列的 Excel 电子表格
- 在文件 1 中,文本永远不会超过 200 个字符
- 在第二个 - 它是。
SSIS 假设从文件夹中自动导入它们 - 简单易行,但是... Excel 源组件决定了此处使用的数据类型。
当使用由我创建的带有示例文本数据的示例文件时,它决定使用 DT_WSTR(255) 失败,第二个文件出现截断错误。
当我强制它使用 DT_NTEXT(通过在示例文件中创建更长的文本)如果失败,第一个文件抱怨“无法检索列的长数据”......因为第一个文件不包含更长的文本...
有没有人为此找到解决方案/解决方法?我的意思是 - 除了手动更改源数据?
非常感谢任何帮助。
【问题讨论】:
-
您需要更改注册表设置,TypeGuessRows: mssqltips.com/sqlservertip/2770/…
-
@MarkWojciechowicz - 这样做没有意义。它的作用是在设置为 0 时检查您的所有数据(好吧,不是全部 - 直到一定数量的行 - 不记得确切的数字)。这里的情况是已经知道这些文本条目有多长。问题是excel源做出的“决定”......一个文件可以,但另一个文件不行,它们是通过相同的自动化过程导入的......
-
问题是它默认根据前 8 行做出决定。第二个文件的前 8 行数据与第一个文件不同。在这种情况下,Excel 做出了错误的决定。强制它查看整个列将阻止它更改数据类型。我会尝试一下,这是处理 excel 文件时的常见问题,这是让 excel 返回正确数据类型的可靠方法。