填充ssis输入源列以避免截断错误?

时间:2018-06-08 20:18:29

标签: sql ssis

第一篇文章。在SSIS中,我使用的是ODBC源,并且数据库(或ODBC驱动程序)似乎无法正确报告数据库中varchar类型列的任何表的列元数据。因此,每次导入表时,都会在所有varchar字段上出现截断错误。有没有办法设置这些字段的大小除了在高级编辑器中执行一次?导入平面文件源时,它允许您为字符串字段选择填充%。对于OLE或ODBC源是否存在类似的内容?如果没有,是否有任何方法可以覆盖列长度,比如强制它们全部为VARCHAR(1000)?

2 个答案:

答案 0 :(得分:0)

我从来没有遇到SQL Server为ODBC连接提供错误的元数据,并且你不太可能在机器中有鬼(Deus Ex Machina)。可以通过高级编辑器在ODBC源中设置列的元数据。我愿意打赌这就是差异所在。为了证实这一点:

  1. 右键单击ODBC连接,然后选择“高级编辑器”
  2. 单击“输入/输出属性”选项卡
  3. 展开OLE DB源输出
  4. 展开外部列和输出列
  5. 检查每个列对并验证元数据是否匹配
  6. 更正元数据中的任何中断
  7. 如果有效,请告诉我。如果它不起作用,请提供您正在使用的数据和SQL查询。

答案 1 :(得分:0)

VARCHAR字段宽度必须设置为最大传入字段宽度。我知道默认字段宽度为50.无论如何,必须设置每个字段。我之前曾在输入文件上处理过大量列的项目。我的解决方案是将列的元数据存储在数据库表中,然后我构建了一个C#应用程序来读取元数据,然后修改* .dtsx文件并在所有列上设置元数据。这是我所知道的自动执行任务的最佳解决方案。

不幸的是,我在通过ODBC提取数据方面没有多少经验。你是从Access数据库中提取的吗?或者,你从中得到什么?