我遇到从文本文件将数据导入SQL的问题。不是因为我不知道怎么...但是因为格式化对于这个目的来说非常可怕。下面是我需要使用的文本文件类型的更改示例:
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
前9行都是特定的测试结果(标签分隔),下面是标题信息。我的问题是我需要弄明白:
如何获取上述数据并将其转换为标准列格式以导入SQL?
如何自动执行此操作,以便循环浏览整个文件夹结构? - 你在上面看到的是分成几个子目录的数百个文件中的一个。
另请注意,标题信息上方的测试行数因文件而异。标题信息保持大致相同的格式。这是所有无法重新生成的遗留数据,但需要导入我们的SQL数据库。
我正在考虑使用带有自定义脚本的SSIS项目来导入数据...通过查找第一个空行来拼接顶部的顶部...然后将标题中的数据转换为列格式。 ..继续......然后继续前进。但我不会写很多VB,我不知道如何处理它。
我在SQL Server 2008R2环境中工作,可以访问BIDS。
思想?
答案 0 :(得分:2)
我首先将数据作为所有字符导入到具有单个字段的表中,每行一个记录。然后,从该表中,您可以将每个记录解析为适合每一行的字段和字段类型。希望有一种方法可以确定每行是什么类型的数据,每个文件是否按顺序是一致的,或者标题记录指示有关后续行的信息。从那里,数据可以移动到最终(解析可能需要多次传递)表,数据以可用于任何您需要的格式存储。
答案 1 :(得分:2)
我首先会集中精力以尽可能最简单(也最不容易出错)的方式将数据导入数据库。创建一个包含三列的表格:filename
,line_number
和line_data
。将所有文件放到该表中,然后您就可以开始考虑如何解释数据了。我可能希望使用PIVOT,但如果不同的文件可以包含不同数量的字段,则可能会引入并发症。
答案 2 :(得分:1)
我会使用不同的方法并使用SSDT / SSIS包来导入数据。
答案 3 :(得分:0)
此解决方案假设您的输入行以正常的Windows方式终止{CR} {LF} 告诉MSSQL的导入/导出向导导入平面文件;格式为“分隔”; “文本限定符”是{CR}; “Header Row Delimiter”是{LF};并且OutputColumnWidth(在“高级”中)比最长的行长度多一点 这很简单,也很有效。
我只是用它来导入2300万行混合数据,花了不到十分钟。现在编辑它......