首页 文章

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

提问于
浏览
1

我是SSIS的新手,我遇到问题'm building a package where I have a Flat File source coming from a CSV and importing it into our database. In the CSV the column I'm被称为日期(日期格式为dd-mm-yy,例如:8-feb-16),我有SSIS建议类型,它给了该列一个类型 string . 在数据库中,Date的相应列具有数据类型 datetime ,它等同于SSIS中具有 database timestamp 类型的数据类型 . 我试过给他们相同的数据类型,尝试通过数据转换运行它,我已经搞砸了很多但似乎没有任何工作 . 也许我错过了什么?我得到的错误是:

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中的每一列使用派生列是非常低效的,但我似乎无法找到更好的答案 .

1 回答

  • 1

    SSIS非常挑剔它允许字符串转换为其他数据格式的格式 . 看一下the doc on Data Types,您会在 Headers Converting Between Strings and Date/Time 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导入,并使用带有表达式的派生列进行翻译 .

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

相关问题