Python下的MySQL:整数值错误
我有一个和这里提到的问题一样的疑问:
我在把一个csv文件导入MySQL时,总是收到“错误的整数值”的警告。我看了所有相关的问题和答案,上面的链接就是我直接的问题。但是我在尝试用Python 2.7实现那里的答案时,似乎总是无法成功。
下面的代码是我尝试实现上面帖子中答案的代码。我觉得问题出在我在Load DATA Local Infile语句中使用“Set”子句的语法上……我非常希望能得到帮助,因为MySQL会自动把空的整数转换成“0”,这会影响我的分析,因为我希望空值是null。我的代码是:
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'附近,第5行")
1 个回答
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);"""