2012-08-06 96 views
0

我在一行间隔文本文件中拥有数千条记录,如下所示。我正在尝试创建一些用SQL导入的划定文件。无论是脚本,功能,甚至是卓越,我都无法得到它。将文本文件中的数据解析为逗号分隔值

RECORD #: ##### 
NAME: Tim 
DOB: 01/01/2012  
SEX: male 
DATE: 07/19/2012 


NOTES IN PARAGRAPH FORM 


END OF RECORD 
RECORD #: ##### 
NAME: Tim 
DOB: 01/01/2012  
SEX: male 
DATE: 07/19/2012 


NOTES IN PARAGRAPH FORM 


END OF RECORD  

所需的输出:

RECORD #: #####,NAME: Tim,DOB: 01/01/2012,SEX: male,DATE: 07/19/2012,NOTES IN PARAGRAPH FORM 
RECORD #: #####,NAME: Tim,DOB: 01/01/2012,SEX: male,DATE: 07/19/2012,NOTES IN PARAGRAPH FORM 
+0

这是否简单地用逗号代替行尾?或者是否需要转换任何标签/值 – 2012-08-06 07:37:08

+0

所需的输出格式不适合进一步的sql处理。你会考虑更标准的.csv输出格式吗?你能否为“PARAGRAPH FORM”添加样本? – 2012-08-06 07:40:22

+0

@oraclecertifiedprofessional段落形式的笔记可能会被搞砸了。 Oracle Loader不能一次完成吗?我正在查看BCP格式的文件。 – rene 2012-08-06 07:40:34

回答

1

一个计划:

  1. 使用。 ReadAll()来输入文件加载到内存中(回退:一行一行读,“记录结束”触发记录处理)
  2. 使用拆分(萨勒,“记录结束”),以获得一个数组的记录(字符串)。对于每个sRecord
  3. 使用拆分(sRecord,EOL,)得到5可能含有EOLS或不
  4. 使用一个正则表达式 '一条线场' 和1文本/注释/备注字段( “\ w + \ s *#?:\ s *(。+)”)(fallback:专业RegExps)从“单行字段”中剪切数据,将第6个
  5. 转换字段中的前导/需要:应该引用字符串数据,第6条中的EOL和引号应该(可能)被删除,使用标准日期格式(yyyy-mm-dd)可以避免以后的问题
  6. 的WriteLine * 加入 *(AFIELDS,体感诱发电位),以output.csv
  7. 描述在SCHEMA.INI文件的output.csv的格式(选择容易/保存列名!)
  8. 使用你的DBMS或ADO的导入以进口将.csv到数据库

随意询问详情。