0

ここで尋ねられたのと同じ質問があります:

MySQL で CSV データをインポートするときの空の整数フィールドのデフォルト値

csv ファイルを Mysql にインポートすると、「不正な整数値」という警告が表示され続けます。ここで関連するすべての質問/回答を読みました。上記のリンクは私の直接の質問です。しかし、Python 2.7 で与えられた答えを実装しようとしていますが、うまくいかないようです。

以下の私のコードは、上記の投稿からの回答を実装しようとする私の試みです。問題は、Load DATA Local Infile ステートメントで「Set」句を使用するための構文だと思います...MySQL は自動的に空の INT を「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 構文にエラーがあります。5 行目の 'IGNORE 1 Lines の近くで使用する正しい構文については、MySQL サーバーのバージョンに対応するマニュアルを確認してください」)

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 に答える