Sql 获取SSIS中的数据类型错误-包失败
我在SSIS中构建了两个包。这个包转到一个文件路径,拉入两个excel文件,并将它们加载到SQL Server db中的两个表中。其中一个包运行良好并加载其各自的表。但是,另一个excel/csv文件包含两个日期列,程序包失败,因为它需要加载的SQL Server表有两个日期时间列。我得到的错误是: -OLE DB目的地出现错误。输入[OLE DB目的地输入]。OLE DB目的地上的列[CustDate]。输入[OLE DB目的地输入] 我尝试在SQL表中强制转换datetime列到Date,但它仍然不起作用,并抛出相同的错误。我在SSIS中添加了一个数据转换任务,尝试将两个日期字段转换为多个数据类型,但仍然出现错误。有人能告诉我应该在SSIS包中转换这两个字段的数据类型吗?第一个包运行正常,因为它在excel文件或加载到的表中不包含任何日期字段 到目前为止,我已经尝试将这两个日期字段转换为:string[DT_STR]、Unicode string[DT_WSTR]、date[DT_date],但它们都不起作用。有人能提供一些建议吗?谢谢大家!Sql 获取SSIS中的数据类型错误-包失败,sql,sql-server,ssis,Sql,Sql Server,Ssis,我在SSIS中构建了两个包。这个包转到一个文件路径,拉入两个excel文件,并将它们加载到SQL Server db中的两个表中。其中一个包运行良好并加载其各自的表。但是,另一个excel/csv文件包含两个日期列,程序包失败,因为它需要加载的SQL Server表有两个日期时间列。我得到的错误是: -OLE DB目的地出现错误。输入[OLE DB目的地输入]。OLE DB目的地上的列[CustDate]。输入[OLE DB目的地输入] 我尝试在SQL表中强制转换datetime列到Date,但
到目前为止,我已经尝试将这两个日期字段转换为:string[DT_STR]、Unicode string[DT_WSTR]、date[DT_date],但它们都不起作用。有人能提供一些建议吗?谢谢大家! 进行了以下两项更改。它会给你答案 1) 选择excel文件连接,并将IMEX=1添加到“属性”下的连接末尾。所以你的连接字符串现在看起来像 Provider=Microsoft.Jet.OLEDB.4.0;数据源=C:\SSIS\Test.xls;扩展属性=“EXCEL 8.0;HDR=YES;IMEX=1” 2) 在派生列转换中使用以下表达式
ISNULL([CustDate])?空(DT_日期):(LEN(TRIM([CustDate])==0?空(DT_日期):(DT_日期)(DT_DBDATE)TRIM([CustDate]))进行了以下两项更改。它会给你答案 1) 选择excel文件连接,并将IMEX=1添加到“属性”下的连接末尾。所以你的连接字符串现在看起来像 Provider=Microsoft.Jet.OLEDB.4.0;数据源=C:\SSIS\Test.xls;扩展属性=“EXCEL 8.0;HDR=YES;IMEX=1” 2) 在派生列转换中使用以下表达式
ISNULL([CustDate])?空(DT_日期):(LEN(TRIM([CustDate])==0?空(DT_日期):(DT_日期)(DT_DBDATE)TRIM([CustDate]))将比SSI的错误更多。您在这里还收到了哪些其他警告/错误?可能是重复的。您能提供您的日期的示例吗?看来您可以成功地将其加载到您的表中。这意味着日期字段的格式肯定有问题,这导致它无法转换。如果在字段中有任何字母,考虑删除这些,以及应用LTRIM(RTRIM(日期))是Excel(.xLSX)文件或CSV文件中的第二个包读数?CSV文件没有数据类型-所有内容都存储为原始字符串值。CSV文件中的日期格式可能与SQL Server设置的格式不同。当将日期序列化为CSV文件时,您应以ISO 8601日期格式为目标,该格式明确无误,无论SQL Server的
DATEFORMAT
设置如何,都可以读入,例如:“Foo”、“2018-12-31”、“Bar”
将出现比SSI更多的错误。您在这里还收到了哪些其他警告/错误?可能是重复的。您能提供您的日期的示例吗?看来您可以成功地将其加载到您的表中。这意味着日期字段的格式肯定有问题,这导致它无法转换。如果在字段中有任何字母,考虑删除这些,以及应用LTRIM(RTRIM(日期))是Excel(.xLSX)文件或CSV文件中的第二个包读数?CSV文件没有数据类型-所有内容都存储为原始字符串值。CSV文件中的日期格式可能与SQL Server设置的格式不同。当将日期序列化为CSV文件时,您应以ISO 8601日期格式为目标,该格式明确无误,并且无论SQL Server的DATEFORMAT
设置如何,都可以读取,例如:“Foo”、“2018-12-31”、“Bar”