- - PR -
LOAD DATA INFILE での型違い値の制御
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2008-05-26 12:48
MySQLのload data機能を使ってファイル読込処理を実装しています。
読込部分は問題なく実装することが出来たのですが、 誤った型を投入しようとした際にエラーを発生させるといった処理が うまく出来ずに困っています。 調べたところ、SQLモードで制御できるとのことだったので、 my.iniのsql-modeにTRADITIONALを設定してみたのですが制御がききません。 使用SQL===== load data local infile [ファイル名] into table テーブル名 FIELDS TERMINATED BY ',' enclosed by '"' lines terminated by '\r\n' (Colmun1, Colmun2, Colmun3) =================== 今回の問題点はSQLでファイル読込した際に 型違い、設定値オーバーの際に勝手に適当な値を 登録してしまうというところにあります。 例えば、int型のカラム部分に文字列を読み込んでしまった際は ERRORをだして登録を止めて欲しいのに、勝手な値"0"を登録して しまうといったことで困っています。 でも、load data 処理は、insertと違ってロールバックが 出来ないみたいですし、無理なんでしょうか?? 自分で調べてみたところ、my.iniのsql-modeにTRADITIONALを 設定しておくとINSERT文は型違い、設定値オーバーの値を登録しようと した際にはERRORで登録を中止してくれました。 load data時にも同様にERRORを出して、ファイル読込処理の中断・ロールバックさせる ような方法を知っている方がいれば、 ご教授願いたいです。 |
1