2009-11-27 82 views
0

我有一個導出功能,它從DB(整個記錄)讀取數據並將它們寫入.txt文件,每行中的一個記錄由';'分隔。我面臨的問題是一些字段中包含CRLF,當我將它們寫入文件時,它會轉到下一行,從而破壞文件的結構。阻止CSV導出數據中的CRLF

唯一的解決方案是用自定義值替換CRLF,並在導入時用CRLF替換。但我不喜歡這個解決方案,因爲這些文件是巨大的,替換操作會降低性能....

您有任何其他想法嗎?

謝謝!

回答

1

是的,使用引用字符串值的CSV生成器。例如,Python的csv模塊。

例如(撕開,並從csvdocs修改):

import csv 
def write(filename): 
    spamWriter = csv.writer(open(filename, 'w'), quoting=csv.QUOTE_ALL) 
    spamWriter.writerow(['Spam'] * 5 + ['Baked Beans']) 
    spamWriter.writerow(['Spam', 'Lovely Spam', 'Wonderful Spam\nbar']) 

def read(filename): 
    reader = csv.reader(open(filename, "rb")) 
    for row in reader: 
     print row 

write('eggs.csv') 
read('eggs.csv') 

輸出:

['Spam', 'Spam', 'Spam', 'Spam', 'Spam', 'Baked Beans'] 
['Spam', 'Lovely Spam', 'Wonderful Spam\r\nbar'] 
+0

好主意......謝謝! – GeoXYZ 2009-11-27 14:05:48

0

如果你有過文件是如何出口和進口控制,那麼你可能想考慮使用XML ..也可以使用雙引號,我相信這些值可以指示像「,」這樣的文字。