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ランキング
-
こちらはただの直列処理ですか?
-
PHPでこのコード自体に意味は無...
-
php 入力画面から確認表示画面...
-
PHP8を使うと、大量のWarningが...
-
アップロード画像数でCSSを分け...
-
PHPSpreadsheetを使って関数を...
-
phpでcookieがうまく保存されない
-
ワードプレスサイト PHP8.0.25...
-
入力フォームの空白や改行を制...
-
PHP一覧表示した項目にリンクを...
-
オススメのプログラミングスク...
-
PHPでのパスワード制限のセキュ...
-
htmlのエラーについて(デバッグ)
-
アマゾンのような評価の星を選...
-
SFTPなどは使わないホームペー...
-
ファイルアップロードに関して...
-
Q&Aサイトを作成していてURLの...
-
画像が表示出来ません。
-
phpでPEAR::DBを使っているので...
-
php 確認表示画面で値をSESSION...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
クラスファイルでエラーが出て...
-
mySQLのインストール関連
-
mysql_queryでのdelimiterの設...
-
cronを使ってPHPからMysqlが実...
-
接続ができません
-
SQLのVARCHARとVARCHAR2の違い
-
副問合せにLIKE文を使う方法は...
-
ODP.NETのバージョン確認
-
ERROR 1045 (28000) (using pas...
-
like句を使って日本語を検索す...
-
VBAで変数内に保持された二次配...
-
MySQLカラム名は日本語と英数字...
-
INT型は金額の型に使用するべき...
-
プライマリーキーの昇順でソー...
-
Float型の時の計算結果がおかしい
-
RPMのmysqlとmysql-serverの違い
-
ヌル値は記憶容量を必要としな...
-
テーブル作成でエラーが出てき...
-
ADOのバージョンを確認する方法
-
MySQLの日本語LIKE検索について
おすすめ情報