将未格式化的txt文件导入SQL
将数据从文本文件导入SQL时遇到问题。不是因为我不知道怎么做…而是因为格式对于这个目的来说非常糟糕。下面是我需要处理的文本文件类型的更改示例:将未格式化的txt文件导入SQL,sql,sql-server-2008,import,ssis,Sql,Sql Server 2008,Import,Ssis,将数据从文本文件导入SQL时遇到问题。不是因为我不知道怎么做…而是因为格式对于这个目的来说非常糟糕。下面是我需要处理的文本文件类型的更改示例: 前9行都是特定的测试结果(以制表符分隔),标题信息如下。我的问题是我需要弄清楚: 我如何将上面的数据转换成标准列格式并导入SQL 然后,我如何使其自动化,以便能够在整个文件夹结构中循环? -您在上面看到的是分为多个子目录的数百个文件之一 还请注意,标题信息上方的测试行数因文件而异。尽管如此,标题信息的格式仍然大致相同。这些都是无法重新生成的遗留数据,
前9行都是特定的测试结果(以制表符分隔),标题信息如下。我的问题是我需要弄清楚:
想法?我首先将数据作为所有字符导入到一个表中,表中只有一个字段,每行一条记录。然后,从该表中,您可以将每条记录解析为适合每行的字段和字段类型。希望有一种方法可以确定每一行是什么类型的数据,每个文件的顺序是否一致,或者头记录指示有关后续行的信息。这样,数据就可以移动到一个最终(解析可能需要不止一次)表中,并且数据的存储格式可以满足您的任何需要。我将首先集中精力以最简单(最不容易出错)的方式将数据输入数据库。创建一个包含三列的表:
filename
、line\u number
和line\u data
。将所有文件放到该表中,然后开始考虑如何解释数据。我可能会考虑使用,但如果不同的文件可以有不同数量的字段,这可能会带来复杂性。我会使用不同的方法,并使用SSDT/SSIS包导入数据
此解决方案假定您的输入行以{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