我坚持使用我为将xlsx文件导入数据库而创建的SSIS包。由于某些文件的数据具有更多棕褐色255个字符,因此我将该列设置为DT_NTEXT。如果我只留下一个我知道有长数据的xlsx文件,那么该软件包工作正常,没有错误。但是,如果我将所有需要导入的文件留在导入文件夹中,我会得到下一个错误:
[VENTA_IMS_EXCEL [1]]错误:SSIS错误代码DTS_E_OLEDBERROR。
发生OLE DB错误。错误代码:0x80040E21。[VENTA_IMS_EXCEL [1]]错误:无法检索列" F17"的长数据。
[VENTA_IMS_EXCEL [1]]错误:输出列出错 " SubFamilia" (16693)关于输出" Excel源输出" (9)。 返回的列状态为:" DBSTATUS_UNAVAILABLE"。
[VENTA_IMS_EXCEL [1]]错误:SSIS错误代码 DTS_E_INDUCEDTRANSFORMFAILUREONERROR。 "输出栏" SubFamilia" (16693)"失败,因为发生错误代码0xC0209071,并且错误行处置 "输出专栏" SubFamilia" (16693)"指定错误失败。发生错误 指定组件的指定对象。可能会发布错误消息 在此之前,有关失败的更多信息。
[SSIS.Pipeline]错误:SSIS错误代码DTS_E_PRIMEOUTPUTFAILED。
组件上的PrimeOutput方法" VENTA_IMS_EXCEL" (1)返回错误代码0xC0209029 当管道引擎调用PrimeOutput()时,组件返回失败代码。 失败代码的含义由组件定义,但错误是致命的 并且管道停止执行。在此之前可能会发布错误消息 有关失败的更多信息。
我的猜测是问题在于它评估每个文件的数据类型,如果数据的颜色为tan 255,则会失败。
任何人都可以帮我吗?我怎么解决这个问题?因此它可以循环并导入所有文件而没有任何问题。
答案 0 :(得分:1)
这是excel文件的常见问题。 excel驱动程序根据前8行推断每列的数据类型。查看分配给列的数据源的数据类型,然后确认所有值都符合此数据类型。
查看此博文:https://www.concentra.co.uk/blog/why-ssis-always-gets-excel-data-types-wrong-and-how-to-fix-it