[英]How can I use python to change the delimiter of a csv file while also stripping the fields of the new delimiter?
我收到了格式良好的csv文件,在包含逗號的文本字段周圍用雙引號引起來。
las,我需要將其加載到SQL Server中,據我所知(請告訴我這里的問題),SQL Server無法處理包含定界符的用引號引起來的字段。
因此,我想編寫一個python腳本,它將a)將文件轉換為以豎線分隔的字符串,並b)刪除字段中存在的所有管道(我的意思是逗號更常見,因此我想保存它們,此外,我還有一些數字字段,至少在將來可能包含逗號)。
這是我要做的代碼:
import csv
import sys
source_file=sys.argv[1]
good_file=sys.argv[2]
bad_file=sys.argv[3]
with open(source_file, 'r') as csv_file:
csv_reader = csv.DictReader(csv_file)
with open(good_file, 'w') as new_file:
csv_writer = csv.DictWriter(new_file, csv_reader.fieldnames, delimiter='|')
headers = dict( (n,n) for n in csv_reader.fieldnames)
csv_writer.writerow(headers)
for line in csv_reader:
csv_writer.writerow(str.replace(line, '|', ' '))
我如何擴充它來做b?
ps-我正在使用python 2.6,IIRC。
SQL Server可以加載您描述的文件類型。 該文件肯定可以用SSIS包加載,也可以用SQL Server bcp實用程序加載。 編寫python腳本不是要走的路(在不需要時將另一種技術引入混合中……只是恕我直言)。 SQL Server能夠准確地處理您要執行的操作。
sis很簡單。 對於BCP,您無需使用-t選項(為整個文件指定字段終止符),而應使用格式文件。 使用格式文件,您可以自定義每個字段終止符。 對於引用的字段,您將要使用自定義定界符。 請參閱本文或其他類似文章,其中詳細介紹了如何使用帶有分隔符和帶引號的字段的BCP和文件來隱藏可能出現在數據中的分隔符。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.