0

我有同样的问题在这里问:

在 MySQL 中导入 CSV 数据时空整数字段的默认值

将 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 服务器版本相对应的手册,以获取在 'IGNORE 1 Lines at line 5 附近使用的正确语法”)

4

1 回答 1

1

SETandIGNORE子句是倒退的。尝试交换它们:

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);"""
于 2013-01-24T17:05:05.047 回答