簡體   English   中英

如何使用python更改csv文件的定界符,同時還剝離新定界符的字段?

[英]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和文件來隱藏可能出現在數據中的分隔符。

SQL Server BCP導出SQL字段中的逗號

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM