CSVファイルをLOAD DATA LOCAL INFILEしようと考えています。
$s = mysql_connect('mysqlxxx.db.sakura.ne.jp', 'user', 'password', 128);
mysql_select_db("user", $s);
$sql = sprintf("LOAD DATA LOCAL INFILE '%s' REPLACE INTO TABLE ItemInfo
FIELDS TERMINATED BY ','",
mysql_real_escape_string('/home/user/www/folder/File.csv')
);
$query = mysql_query($sql);
LOAD DATA LOCALの処理の権限を有効にするために
mysql_connect関数のパラメータclient_flags の値を128にして実行したのですが、
以下のエラーになってしまいます。
1148: The used command is not allowed with this MySQL version
どなたか、原因・解決法をご教授いただきたいです。
$client_flagsは第五引数ですぞ!
第四引数の$new_link=trueの入れ忘れが原因かと。
mysql_connect('mysqlxxx.db.sakura.ne.jp', 'user', 'password', true, 128);
でどうでしょ。
http://q.hatena.ne.jp/1240681560
ここで指摘されているCSVの改行コード、区切り等もすべて試してみたのですが、同じエラー2027: Malformed packetのままでした。
友人に同じスクリプトを試してもらったところ、正常にLOAD DATA LOCAL INFILEできました。
それで私のサーバーでは2027: Malformed packetが出るということは、サーバー上の問題なのかな?さくらインターネットに問い合わせてdbサーバーを変えてもらうかな?と検討中です。