0

csv ファイルから mysql にデータをロードするために load data infile プロシージャを使用しようとしましたが、set ステートメントに不明な変数エラーがあるため、ロードできませんでした。

LOAD DATA LOCAL INFILE 'D:\\Bets\\BD\\tables\\match.csv' 
INTO TABLE `bets`.`match` 
FIELDS TERMINATED BY ';' OPTIONALLY ENCLOSED BY '"' ESCAPED BY '"' 
LINES TERMINATED BY '\r\n' 
(`idMatch`, `idChampionship`, @date, `homeTeam`, `awayTeam`, `homeTeamGoals`, `awayTeamGoals`, `matchType` );

SET matchDate = STR_TO_DATE(@date, 'YYYY-MM-DD')

インポートする日付フィールドの形式は 2011-08-07 です。

クエリを実行すると、次のエラーが表示されます: SQL エラー (1193): 不明なシステム変数 'matchDate'。

どんな助けでも感謝します...ありがとう!

4

2 に答える 2

0

私は同じ問題に遭遇しました。SET 行は、LOAD DATA INFILE ... ステートメントの一部である必要があります。コードでは、列式はセミコロンで終了し、LOAD DATA INFILE の終了後に SET コマンドを実行します。ステートメントで作成されたユーザー変数は、ステートメントが完了すると存在しなくなります。正しい記述は次のようになります。

LOAD DATA LOCAL INFILE 'D:\\Bets\\BD\\tables\\match.csv' 
INTO TABLE `bets`.`match` 
FIELDS TERMINATED BY ';' OPTIONALLY ENCLOSED BY '"' ESCAPED BY '"' 
LINES TERMINATED BY '\r\n' 
(`idMatch`, `idChampionship`, @date, `homeTeam`, 
 `awayTeam`,`homeTeamGoals`, `awayTeamGoals`, `matchType`)
SET matchDate = STR_TO_DATE(@date, 'YYYY-MM-DD');
于 2015-12-31T09:47:33.307 に答える