2012-08-06 28 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到數據庫

隨意詢問詳情。

相關問題