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... ]