- PR -

LOAD DATA INFILE での型違い値の制御

1
投稿者投稿内容
未記入
会議室デビュー日: 2008/05/09
投稿数: 4
投稿日時: 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

スキルアップ/キャリアアップ(JOB@IT)