[前][次][番号順一覧][スレッド一覧]

rails:3803

From: 久野@サイベイト <hisano@s...>
Date: Fri, 07 Sep 2012 15:49:06 +0900
Subject: [rails:3803] railsでLOAD DATA INFILE

お世話になります。久野と申します。


railsにて大量データの取り込みの必要があったため、LOAD DATA INFILE構文の
利用を試みたところ、
以下のエラーが発生して取り込みに失敗しました。

ActiveRecord::StatementInvalid: Mysql::Error: #42000The used command is
not allowed with this MySQL version: LOAD DATA LOCAL INFILE '/path/to/file'

・DBへの接続ユーザにFILE権限があることは確認しています。
・コマンドラインからの直接実行はOKでした。

ぐぐったところ、クライアント側にも許可が必要との情報がありました。
それによると、以下のように明示的にINFILE取り込み許可を与えれば良いとのこ
とでした。
$ mysql --local-infile=1

このオプションを例えばdatabase.ymlに指定する方法はありますでしょうか。
もしくは別途解決方法が有りましたら教えてください。

■実行コード
query = <<-SQL
LOAD DATA LOCAL INFILE '/path/to/file'
INTO TABLE table
CHARACTER SET sjis
FIELDS
TERMINATED BY ','
LINES
TERMINATED BY '\r\n'
IGNORE 1 LINES
(
...
);
SQL
ActiveRecord::Base.connection.execute(query)

■実行環境
$ rails -v
Rails 2.1.1
$ mysql --version
mysql Ver 14.12 Distrib 5.0.96, for unknown-linux-gnu (x86_64) using
readline 5.1



--
ML: rails@r...
使い方: http://QuickML.com/

[前][次][番号順一覧][スレッド一覧]

->    3803 2012-09-07 08:49 [hisano@s...         ] railsでLOAD DATA INFILE                 
   @  3804 2012-09-07 09:40 ┗[hisano@s...         ]