SSIS日期,逗号和派生列问题

时间:2016-02-19 20:04:58

标签: sql-server csv ssis

我是SSIS的新手,我正在构建一个包,其中我有一个来自CSV的平面文件源并将其导入我们的数据库。在CSV中,我遇到问题的列称为日期(日期格式为dd-mm-yy,例如:8-feb-16),我有SSIS建议类型,它为该列提供了{ {1}}。在数据库中,Date的相应列具有数据类型string,这相当于SSIS中的类型为datetime。我试过给他们相同的数据类型,尝试通过数据转换运行它,我已经搞砸了很多但似乎没有任何工作。也许我错过了什么?我得到的错误是:

database timestamp

另一个问题是表数据中有一些逗号,但它们出现在随机列中。是否有一种简洁的方法来搜索所有行以删除逗号?对我的CSV中的每一列使用派生列是非常低效的,但我似乎无法找到更好的答案。

1 个答案:

答案 0 :(得分:1)

SSIS非常挑剔它允许字符串转换为其他数据格式的格式。请查看the doc on Data Types,您会在标题在字符串和日期/时间数据类型之间转换标题下看到,将字符串转换为日期/时间类型支持以下格式:

+----------------------+---------------------------------------------+
|      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,并使用带有表达式的派生列进行翻译。

另一种选择是将它们作为字符串导入到临时表中,然后从那里转换它们。