将未格式化的txt文件导入SQL

将未格式化的txt文件导入SQL,sql,sql-server-2008,import,ssis,Sql,Sql Server 2008,Import,Ssis,将数据从文本文件导入SQL时遇到问题。不是因为我不知道怎么做…而是因为格式对于这个目的来说非常糟糕。下面是我需要处理的文本文件类型的更改示例: 前9行都是特定的测试结果(以制表符分隔),标题信息如下。我的问题是我需要弄清楚: 我如何将上面的数据转换成标准列格式并导入SQL 然后,我如何使其自动化,以便能够在整个文件夹结构中循环? -您在上面看到的是分为多个子目录的数百个文件之一 还请注意,标题信息上方的测试行数因文件而异。尽管如此,标题信息的格式仍然大致相同。这些都是无法重新生成的遗留数据,

将数据从文本文件导入SQL时遇到问题。不是因为我不知道怎么做…而是因为格式对于这个目的来说非常糟糕。下面是我需要处理的文本文件类型的更改示例:



前9行都是特定的测试结果(以制表符分隔),标题信息如下。我的问题是我需要弄清楚:

  • 我如何将上面的数据转换成标准列格式并导入SQL

  • 然后,我如何使其自动化,以便能够在整个文件夹结构中循环? -您在上面看到的是分为多个子目录的数百个文件之一

  • 还请注意,标题信息上方的测试行数因文件而异。尽管如此,标题信息的格式仍然大致相同。这些都是无法重新生成的遗留数据,但需要导入到SQL数据库中

    我正在考虑使用带有自定义脚本的SSIS项目导入数据…通过查找第一个空行从底部拼接顶部部分…然后将标题中的数据转换为列格式…合并…然后继续。但是我不太会写VB,我不知道该怎么做

    我在SQLServer2008R2环境中工作,可以访问投标


    想法?

    我首先将数据作为所有字符导入到一个表中,表中只有一个字段,每行一条记录。然后,从该表中,您可以将每条记录解析为适合每行的字段和字段类型。希望有一种方法可以确定每一行是什么类型的数据,每个文件的顺序是否一致,或者头记录指示有关后续行的信息。这样,数据就可以移动到一个最终(解析可能需要不止一次)表中,并且数据的存储格式可以满足您的任何需要。

    我将首先集中精力以最简单(最不容易出错)的方式将数据输入数据库。创建一个包含三列的表:
    filename
    line\u number
    line\u data
    。将所有文件放到该表中,然后开始考虑如何解释数据。我可能会考虑使用,但如果不同的文件可以有不同数量的字段,这可能会带来复杂性。

    我会使用不同的方法,并使用SSDT/SSIS包导入数据

  • 添加脚本组件以读取文本文件并将其转换为XML。不难有很多。在脚本中存储开发为变量的XML
  • 添加数据流
  • 添加一个XML源。在XML源中,您可以选择创建的XML变量并处理文件中的任意一组数据。这里有一些关于的信息
  • 添加目标任务以将其导入到您选择的目标

  • 此解决方案假定您的输入行以{CR}{LF}终止,这是正常的Windows方式。
    告诉MSSQL的导入/导出向导导入平面文件;格式为“分隔符”;“文本限定符”是{CR};“标题行分隔符”是{LF};并且OutputColumnWidth(在“高级”中)比可能的最长行长度稍长。
    这很简单,而且很有效


    我只是用它来导入2300万行混合数据,不到十分钟。现在编辑它…

    这与我说的基本相同,但是说得更好,更详细。
    1   VA -    P
    2   VB to 1X    P
    3   VC to 1Y    P
    4   N - P
    5   G to 1G,Frame   P
    6   Fout to 1G,Frame    P
    7   Open Breaker    P
    8   1B to 1X    P
    9   1C to 1Y    P
    
    Test Status: Pass
    Hi-Pot @ 1500V: Pass 
    Customer Order:904177-F
    Number: G4901626-200
    Serial Number: J245F6-2D03856
    Catalog #: CBDC37-X5LE30-H40-L630C-4GJ-G31
    Operator: TGY
    Date:  Aug 01, 2013
    Start Time: 04:09:26
    Finish Time: 04:09:33