Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 获取SSIS中的数据类型错误-包失败_Sql_Sql Server_Ssis - Fatal编程技术网

Sql 获取SSIS中的数据类型错误-包失败

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,但

我在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],但它们都不起作用。有人能提供一些建议吗?谢谢大家!


到目前为止,我已经尝试将这两个日期字段转换为: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”