繁体   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