
LOAD DATA LOCAL INFILE を使ってmysql にcsv からデータを挿入したいのですが
#1148 - The used command is not allowed with this MySQL version
とエラーが出てきます。※エラー情報はmyphpadminから得ています。
以下の文を実行しています。
※他のサーバーで動いているので、ソースに間違いはないと思います。
※サーバーの引っ越しで出てきた不具合ですが、以前何かをしたかは覚えていません。。。
LOAD DATA LOCAL INFILE '/パス/data.txt' REPLACE INTO TABLE data fields terminated by ',' ENCLOSED BY '"' LINES TERMINATED BY ' '
権限を付与すれば良い、と言う記事を読んだのですが
具体的にはどのような事をしたらいいのでしょうか?
FTPでファイルをアップロードして、php を実行しています。
MySQL 5.1.73
PHP 5.3.3
よろしくお願いいたします。
No.3ベストアンサー
- 回答日時:
ごめんなさい、ちょっと検証できてないんだけど
$sql_txt = <<<EOF
LOAD DATA LOCAL INFILE %s INTO TABLE `%s`
fields terminated by ',' enclosed by '"'
LINES TERMINATED BY '\n'
EOF;
としているところ
$sql_txtに投入する際「\n」が展開されてないですか?
LINES TERMINATED BY '\\n'
としてみてはどうでしょう?
(SQL文として\nという文字列にするので・・・)
お礼遅くなりました!
試行錯誤に時間が掛かってしまいました。
どうしても「PDO」ではうまく動いてくれませんでした。
そして、このような記事を読み「PDO」をあきらめました。
※PHPのバージョンを5.4.19に上げると解決したとありましたが、
新たな問題が出てきそうなので、その案はあきらめました。
http://oshiete.goo.ne.jp/qa/8498457.html?from=hi …
以下の方法で解決いたしました。
my.cnf の設定変更
「enable-local-infile」を有効に
$strimport = 'mysqlimport --fields-terminated-by="," --fields-enclosed-by="\"" -L --host=localhost --user=ユーザ名 --password=パスワード データベース名 /var/www/・・・・フルパス/ファイル名.csv';
system($strimport);
色々なご提案、ありがとうございました。
No.2
- 回答日時:
mysql_関数を利用している時点で、かなりの不利があります。
ある日いきなり使えなくなるリスクがあることを留意してください。
http://webtech.seesaa.net/article/106290358.html
あたりにmysqlimportコマンドをsystem()関数あたりで実行する方法が挙げられています
つまりmysql_関数では処理が難しいということでしょう。
この回答への補足
yamabe様に挙げてもらったページなどを読んでいるうちに
PDOで接続しないと、リスクがあるのかなと思うようになりました。
そこで以下の様にいたしましたが、まだ同じエラーが出ます。
何度も申し訳ございませんが、よろしくお願いいたします。
--------------------------------------------------------
$dsn = 'mysql:dbname=データベース名;host=localhost;charset=utf8';
$user = 'ユーザ名';
$password = 'パスワード';
$option = array(
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::MYSQL_ATTR_LOCAL_INFILE => true ,
);
try{
$pdo = new PDO($dsn, $user, $password, $option);
$sql_txt = <<<EOF
LOAD DATA LOCAL INFILE %s INTO TABLE `%s`
fields terminated by ',' enclosed by '"'
LINES TERMINATED BY '\n'
EOF;
$table= 'data';
$file="/パス/data.txt";
$sql = sprintf($sql_txt , $pdo->quote($file), $table);
//SQL文を見たいので
print $sql;
$stmt = $pdo->query($sql);
echo "完了";
}catch(Exception $e) {
echo 'エラー:', $e->getMessage();
}
--------------------------------------------------------
以下、表示部分
LOAD DATA LOCAL INFILE '/パス/data.txt' INTO TABLE `data` fields terminated by ',' enclosed by '"' LINES TERMINATED BY ' '
エラー:SQLSTATE[42000]:
Syntax error or access violation: 1148 The used command is not allowed with this MySQL version
No.1
- 回答日時:
この回答への補足
早速回答していただきありがとうございます。
PDO は利用しておりません。
以下の様に接続しております、よろしくお願いいたします。
require("../dbini.php");
$con = mysql_connect($DBSERVER, $DBUSER, $DBPASSWORD);
$selectdb = mysql_select_db($DBNAME, $con);
mysql_query('set character set utf8');
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(プログラミング・Web制作) mariadbでのエラー 1 2022/11/15 12:31
- その他(プログラミング・Web制作) データ解析ソフトRでのファイル入力read.csvがエラーになります 7 2022/03/27 22:11
- JavaScript 【jquery】EasyUIのSubGridにMySQLのテーブルデータを表示&編集にしたい 5 2022/05/02 13:10
- MySQL 参考書に従って入力したつもりでしたが、最後はエラーがでました。 1 2022/09/28 03:45
- MySQL MySQLのテーブル作成でハイフン - は使用できないのでしょうか? 2 2022/10/21 16:50
- その他(プログラミング・Web制作) python 2 2022/12/23 09:06
- C言語・C++・C# pythonのファイルの並びでの読み込みとリストについて 4 2022/04/13 03:52
- MySQL `picture` varchar(255) のコマンドで間違いないでしょうか? 1 2022/11/21 04:08
- 英語 The SD reamer drill with stopper may also be used 3 2022/04/22 09:40
- Gmail 【お助け!】サーバーからのメール送信でGmailに送信されない問題について 1 2023/06/20 22:03
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
切捨ての仕方について
-
MySQLカラム名は日本語と英数字...
-
エクセルで連勤チェックをした...
-
max_sp_recursion_depthを設定...
-
UTF-8にしても文字化けが直らない
-
mysqlがインストールされている...
-
ODP.NETのバージョン確認
-
SQL文の実行
-
SQL開発環境ソフトウェアである...
-
MySQLインストール
-
列数が多いと結果が行単位に改...
-
副問合せにLIKE文を使う方法は...
-
select文でのデータの取り出し方法
-
MySQLで先頭の0が省略されてし...
-
ADOのバージョンを確認する方法
-
order の昇降順で 250 より...
-
VBAで変数内に保持された二次配...
-
postgreSQLのデータ型
-
パスワード入力を省略したい
-
XAMPPのMySQLを外部から接続で...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
LOAD DATA LOCAL INFILE
-
クラスファイルでエラーが出て...
-
mysqliについて
-
mySQLに詳しい兄貴来てください
-
mysql_queryでのdelimiterの設...
-
「addslashes」と「htmlspecial...
-
sqlite_escape_stringのアンエ...
-
PHPでMySQLのデータを表示したい
-
Linuxで、Pearコマンドが使えな...
-
MySQLとPHPを使用した「何分前...
-
さくらVPS+CakePHPがうまく動...
-
接続ができません
-
MySQLカラム名は日本語と英数字...
-
副問合せにLIKE文を使う方法は...
-
列数が多いと結果が行単位に改...
-
like句を使って日本語を検索す...
-
SQLのVARCHARとVARCHAR2の違い
-
VBAで変数内に保持された二次配...
-
mysqlがインストールされている...
-
ODP.NETのバージョン確認
おすすめ情報