使用SSIS从数据中删除多余的空间

时间:2018-08-24 19:35:47

标签: ssis

我有管道定界文件,列和行类似

Name | City | Address | State |....

我要删除其他空格,然后加载数据。我很难打开所有文件,因为它有1200多个文件。

如何删除多余的空间并加载文件?

3 个答案:

答案 0 :(得分:0)

欢迎来到SO。仅供参考,您应该确定要采用的解决方案;做;然后让我们知道您遇到的具体问题。我们并不是在这里提供总体解决方案。

在这里张贴的有关SSIS执行数据灭菌的必要性的问题数量令人遗憾,最好是事先处理。但是,一种解决方案是添加一个派生的列转换并将TRIM()函数应用于每个列。如果文件中的列很多,那可能就没那么有趣了,您可能要考虑应用遍历整个文件并删除前导和滞后空格的脚本任务或PowerShell脚本。

答案 1 :(得分:0)

我只需要用csv来做到这一点。

首先使用脚本任务清理文件。

string fpath = Dts.Variables["User::fileName"].Value.ToString();
string readContents;
using (StreamReader sr = new StreamReader( fpath, Encoding.UTF8))
{
    readContents = sr.ReadToEnd();
    readContents = Regex.Replace(readContents, " | ", "|");   //This code removes the extra space between every column.
    //readContents = Regex.Replace(readContents, " \r\n", "\r\n"); //This removes the extra space at the end of a line
}

File.WriteAllText(fpath, readContents);

添加以下名称空间:

using System.IO;
using System.Text;
using System.Text.RegularExpressions;

答案 2 :(得分:0)

如果每个标题和每个列中的数据前后空格都一致,则可以通过将原始数据加载到登台表中并在其中处理所有数据质量修复的方法,以一种更为简单的方式来处理。这是一个好的设计实践,因为像这样的任何其他问题都可以在此轻松解决。 Sql处理此类更新的速度比siss快得多。