2016-09-20 27 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='\\')