Sql server SSIS日期、逗号和派生列问题
我是SSIS的新手,我正在构建一个包,其中有一个来自CSV的平面文件源,并将其导入到我们的数据库中。在CSV中,我遇到问题的列名为Date(日期格式为dd-mm-yy,例如:2016年2月8日),我有SSIS建议类型,它为该列提供了一种类型为Sql server SSIS日期、逗号和派生列问题,sql-server,csv,ssis,Sql Server,Csv,Ssis,我是SSIS的新手,我正在构建一个包,其中有一个来自CSV的平面文件源,并将其导入到我们的数据库中。在CSV中,我遇到问题的列名为Date(日期格式为dd-mm-yy,例如:2016年2月8日),我有SSIS建议类型,它为该列提供了一种类型为string。在数据库中,日期的对应列具有数据类型datetime,这相当于它在SSI中具有类型数据库时间戳。我试着给他们相同的数据类型,试着通过数据转换来运行它,我把它们弄得一团糟,但似乎没有任何效果。也许我错过了什么?我得到的错误是: The data
string
。在数据库中,日期的对应列具有数据类型datetime
,这相当于它在SSI中具有类型数据库时间戳
。我试着给他们相同的数据类型,试着通过数据转换来运行它,我把它们弄得一团糟,但似乎没有任何效果。也许我错过了什么?我得到的错误是:
The data conversion for column ""Date"" returned status value 2 and status text
The value could not be converted because of a potential loss of data.
另一个问题是,表数据中有一些逗号,但它们出现在整个随机列中。是否有一种简洁的方法来搜索所有行以删除逗号?对我的CSV中的每一列使用派生列确实效率低下,但我似乎找不到更好的答案。SSIS对允许字符串转换为其他数据格式的格式非常挑剔。查看一下,您将在标题下看到字符串和日期/时间数据类型之间的转换将字符串转换为日期/时间类型支持以下格式:
+----------------------+---------------------------------------------+
| Data type | String format |
+----------------------+---------------------------------------------+
| DT_DBDATE | yyyy-mm-dd |
| DT_FILETIME | yyyy-mm-dd hh:mm:ss:fff |
| DT_DBTIME | hh:mm:ss |
| DT_DBTIME2 | hh:mm:ss[.fffffff] |
| DT_DBTIMESTAMP | yyyy-mm-dd hh:mm:ss[.fff] |
| DT_DBTIMESTAMP2 | yyyy-mm-dd hh:mm:ss[.fffffff] |
| DT_DBTIMESTAMPOFFSET | yyyy-mm-dd hh:mm:ss[.fffffff] [{+|-} hh:mm] |
+----------------------+---------------------------------------------+
这是您唯一的格式选择。如果您的值与该格式不匹配,则必须使其与该格式匹配
最好将字段作为DT_WSTR导入,并使用带有表达式的派生列进行翻译
另一个选项是将它们作为字符串导入到staging表中,然后从那里转换它们