首页 > 解决方案 > 解析引号和转义字符 CSV 文件

问题描述

我需要将大量数据导入 SQL,输出文件(文本)是从 ABAP 程序生成的 UTC-8,我可以在其中定义引号和转义字符,默认情况下我正在使用:

\作为转义字符串

"(双引号)引用字符

;(分号)分隔列。

我的问题在于大多数文本类型的列都包含双引号或转义字符,当尝试将其导入 SQL 数据库时,由于列的数据分配错误,接口失败。

我设法避免使用下面的 python 脚本使用 \n,但我正在努力使用双引号,你能建议任何想法来替换引号字符内的双引号吗?

文本字段,例如来自“厄瓜多尔”的=香蕉,因为 CSV 文件中的数据存储为“来自“厄瓜多尔”的香蕉,这给我造成了很大的麻烦

import csv
filename = "0180914_074626.csv"
with open(filename, 'r', encoding='utf8', errors='ignore') as inputfile, \
     open(filename + '.log.csv', 'w', encoding="utf8") as outputfile_log:
     w = csv.writer(outputfile_log, delimiter=';', quotechar='"', lineterminator='\n')
       for record in csv.reader(inputfile):
            #print(record)
            w.writerow(tuple(s.replace("\n", '-') for s in record))

标签: pythonpython-3.xcsvtextimport

解决方案


研究将BCP 与格式文件一起使用。

然后,您可以指定,例如,最后一列以双引号结尾,后跟 CRLF。其他列以双引号结尾,后跟分号。

对于每一列,任何与构成该列终止符的字符组合不匹配的字符都将被忽略。


推荐阅读