我有同样的问题:
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)
答案 0 :(得分:1)
SET
和IGNORE
条款是向后的。尝试交换它们:
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);"""