2016-09-20 24 views
0

我想读取一个mysql csv转储但不断收到错误。我看到读了一些问题,但无法工作。Python不能读取csv转储

SELECT * FROM products INTO OUTFILE 'products.csv' FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\n'; 
在Python

在MySQL

我想:

import csv 
with open('products.csv', 'r') as csvfile: 
    data = csv.reader(csvfile, delimiter=',', quotechar='"') 
    for row in data: 
     print ', '.join(row) 

,并得到:

Error: new-line character seen in unquoted field - do you need to open the file in universal-newline mode?

,并试图:

import csv 
with open('products.csv', 'rU') as csvfile: 
    data = csv.reader(csvfile, delimiter=',', quotechar='"') 
    for row in data: 
     print ', '.join(row) 

和它的工作,但它分裂包含一个换行符

,并试图细胞:

pandas.read_csv('products.csv') 

,并得到:

pandas/parser.pyx in pandas.parser.TextReader.read (pandas/parser.c:7988)()

pandas/parser.pyx in pandas.parser.TextReader._read_low_memory (pandas/parser.c:8244)()

pandas/parser.pyx in pandas.parser.TextReader._read_rows (pandas/parser.c:8970)()

pandas/parser.pyx in pandas.parser.TextReader._tokenize_rows (pandas/parser.c:8838)()

pandas/parser.pyx in pandas.parser.raise_parser_error (pandas/parser.c:22649)()

CParserError: Error tokenizing data. C error: Expected 29 fields in line 25, saw 39

帮助的人?

+0

任何特定的原因不使用mysql的LOAD DATA命令? – e4c5

+0

我想从mysql中导出数据,而不是将其插入 – user4421975

+0

,它使事情变得清晰。为什么不直接从python连接到mysql? YOu已经从mysql中导出,这就是为什么你有一个CSV文件 – e4c5

回答

0

我刚碰到同样的问题。我通过指定escapechar来解决它,例如:

data = csv.reader(csvfile, delimiter=',', quotechar='"', escapechar='\\')