大きな(500 MB)* .csvファイルをMySQLデータベースにインポートしようとしています。LOAD DATA INFILE(* .csv) - 空のセルを無視する
私はその限りだ:
LOAD DATA INFILE '<file>'
REPLACE
INTO TABLE <table-name>
FIELDS
TERMINATED BY ';'
OPTIONALLY ENCLOSED BY '"'
IGNORE 1 LINES (#Header
<column-name1>,
<column-name2>,
...
);
私は(それのデータ型はintです)colunsのいずれかに問題を持っている - 私は、エラーメッセージを取得:
エラーコードを:1366不正確な整数値:行の列の '' '
この行を* .csvファイルで見ました。エラーの原因となるセルには空白だけがあります(このように:... ;; ...)。
この列の空白を無視するようにSQLに指示するにはどうすればよいですか?
* .csvファイルが非常に大きいので、後で大きなファイルをインポートする必要があるため、* .csvファイルの編集は避けてください。私はSQLソリューションを探しています。
ありがとうございました!
[EDIT] ソリューションです:
LOAD DATA INFILE '<file>'
REPLACE
INTO TABLE <table-name>
FIELDS
TERMINATED BY ';'
OPTIONALLY ENCLOSED BY '"'
IGNORE 1 LINES (#Header
<column-name1>,
<column-name2>,
@var1 #the variable that causes the problem
...
)
SET <column-name-of-problematic-column> = CASE
WHEN @var1 = ' ' THEN NULL
ELSE @var1
END
;
ありがとうございます! それは働いた!私はマニュアルのこの部分を見ましたが、私はちょうどあなたの説明でそれを得ることができました – speendo