【发布时间】:2017-10-16 22:09:09
【问题描述】:
我已经构建了一个 SSIS 包,可以将多个分隔文本文件加载到 SQL 数据库中。其中一个文件中通常包含行空格,这打破了设置平面文件源并映射到 ado.net 目标的标准数据流任务,因为它在到达换行符时认为它在新行上。发送文件的供应商不想在没有任何编辑的情况下发送文件,此时不能执行 XML。有没有什么办法解决这一问题?我正在考虑编写一个小的 vb.net 程序来纠正文件,以便它们可以在 SSIS 包中工作,但不知道如何编写该逻辑。该文件有 5 列,前 2 列是大整数并且总是包含一些长整数 ID,然后是一个小文本列,它只包含一个短词,然后是一个日期,然后是一个导致问题的长 cmets 字段。 cmets 字段有时是空白的(这没关系),问题是有换行符的行。我永远不知道 cmets 中有多少换行符,有些没有,有些可以连续有几个,甚至多个换行符,所以想知道这是否可能。
5787626|6547599|已批准|2017 年 1 月 10 日|申请费用减免申请已获批准 5443221|7742812|活跃|11/5/2013| 3430962|7643957|重新安排|2016 年 5 月 25 日|拒绝修订条款和条件 申请人有 30 天的时间提交延期文件。 34433624|7673715|拒绝|2017 年 1 月 24 日| 34113575|7653748|有效|1/8/2014|已授予新条款。
示例文件格式。
【问题讨论】:
-
我做过类似的事情。从我的方法中获取指导。我创建了一个包含 30 列的临时表(我的管道分隔列固定为 MAX 30)。现在读取管道分离的列并将它们写入 txt 文件。然后再次从文本中读取并将它们放在临时表中。写入后删除txt文件。希望这有意义吗?
-
我不明白,如果我将文件加载到暂存表中,那么我将得到一个暂存表,其中的列中的数据没有意义。例如,这会让我在应该只包含一个大整数值的列中留下诸如“申请人有 30 天”之类的文本。
-
您在寻找什么样的输出?我想我误解了你的输出要求。
-
我希望能够将平面文件分隔的文本加载到 SQL 表中。问题是平面文件中的最后一列没有结束分隔符,它使用 CRLF(行空间)来指示转到下一行,并且通常最后一列在数据中具有行空间。