【问题标题】:Parse data from text file into comma delimited values将文本文件中的数据解析为逗号分隔值
【发布时间】:2012-08-06 07:28:41
【问题描述】:

我在一个行距文本文件中有数千条如下所示的记录。我正在尝试创建某种类型的划定文件以在 SQL 中导入。无论是脚本,功能,甚至是excel,我都无法理解。

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

【问题讨论】:

  • 这只是用逗号替换行尾吗?还是您需要转换任何标签/值
  • 所需的输出格式不适合进一步的 sql 处理。您会考虑更标准的 .csv 输出格式吗?您能否为“PARAGRAPH FORM”添加一个示例?
  • @oraclecertifiedprofessional 段落形式的注释可能会被搞砸。 Oracle Loader 不能一口气搞定吗?我在看 BCP 格式的文件。
  • 目标数据库平台是什么?
  • 这个地方很震撼。赛贝斯。需要创建一个包含列记录#、姓名、出生日期、性别、记录日期、注释的表。以下笔记示例

标签: sql excel csv vbscript sybase


【解决方案1】:

一个计划:

  1. 使用 .ReadAll() 将输入文件加载到内存中(回退:逐行读取,“END OF RECORD”触发记录处理)
  2. 使用 Split(sAll, "END OF RECORD") 获取记录数组(字符串)。对于每个 sRecord
  3. 使用 Split(sRecord, EOL, 6) 获得 5 个“单行字段”和 1 个可能包含或不包含 EOL 的文本/注释/备忘录字段李>
  4. 使用一个 RegExp ("\w+\s*#?:\s*(.+)") (备用:专门的 RegExps)从“一行字段”中剪切数据,从第 6 个开始修剪前导/尾随空格
  5. 根据需要转换字段:应引用字符串数据,应(可能)省略第 6 位的 EOL 和引号,使用标准日期格式 (yyyy-mm-dd) 可以避免以后出现问题
  6. .WriteLine *加入*(aFields, sSep) 到 output.csv
  7. schema.ini 文件中描述 output.csv 的格式(选择简单/保存列名!)
  8. 使用 DBMS 或 ADO 的导入工具将 .csv 导入到数据库中

欢迎询问详情。

【讨论】:

    猜你喜欢
    • 2013-04-19
    • 2016-06-22
    • 1970-01-01
    • 1970-01-01
    • 2015-01-18
    • 1970-01-01
    • 1970-01-01
    • 2017-02-03
    • 1970-01-01
    相关资源
    最近更新 更多