MySQL for Python:不正确的整数值

时间:2013-01-24 17:02:39

标签: python mysql csv

我有同样的问题:

Default value for empty integer fields when importing CSV data in MySQL

将csv文件导入Mysql时,我不断收到“不正确的整数值”警告。我在这里阅读了所有相关的问题/答案,上面的链接是我的直接问题。但是我正在尝试在Python 2.7中实现那里给出的答案,我似乎无法让它工作。

我的代码是我尝试实现上述帖子的答案。我认为问题是在我的Load DATA Local Infile语句中使用“Set”子句的语法...我真的很感激任何帮助,因为MySQL会自动将空INT转换为“0”,这会因为我想要弄乱我的分析空白是空的。我的代码是:

import MySQLdb
db = MySQLdb.connect(blah, blah, blah)
cursor = db.cursor()

sql = """CREATE TABLE PLAYER(
       PLAYER_ID INT,
       DATE DATETIME,
       BATTING_AVERAGE INT
       )"""

cursor.execute(sql)
statement = """LOAD DATA LOCAL INFILE 'path/file.csv'
INTO TABLE PLAYER
COLUMNS TERMINATED BY ','
SET BATTING_AVERAGE = IF(@BATTING_AVERAGE='',NULL,@BATTING_AVERAGE)
IGNORE 1 LINES;"""

此代码提供的错误是:

ProgramingError:(1064,“您的SQL语法有错误;请查看与您的MySQL服务器版本对应的手册,以便在第5行的'IGNORE 1 Lines'附近使用正确的synatx)

1 个答案:

答案 0 :(得分:1)

SETIGNORE条款是向后的。尝试交换它们:

statement = """LOAD DATA LOCAL INFILE 'path/file.csv'
INTO TABLE PLAYER
COLUMNS TERMINATED BY ','
IGNORE 1 LINES
SET BATTING_AVERAGE = IF(@BATTING_AVERAGE='',NULL,@BATTING_AVERAGE);"""