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ランキング
-
mySQLのインストール関連
-
接続ができません
-
SQLのVARCHARとVARCHAR2の違い
-
副問合せにLIKE文を使う方法は...
-
オラクルのデータ型・通貨について
-
ERROR 1045 (28000) (using pas...
-
ODP.NETのバージョン確認
-
C言語で変数の内容をINSERTする...
-
MySQLにリモートホストから接続...
-
MySQL sleep が溜まる
-
mysqlの->とはどういう意味です...
-
泣きそうです>< PHPでSQLite3が...
-
like句を使って日本語を検索す...
-
バッチファイルでTRUNCATE TABLE
-
VBAで変数内に保持された二次配...
-
複数行のクエリを、まとめて実...
-
my.cnf と my.ini の違い
-
phpmyadminから別ホストへの接...
-
パスワード入力を省略したい
-
実行時エラー80004005
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
MeCabの結果をWindows+PHPで取...
-
PHPからmySQLへINSERT文の実行
-
mysql_queryでのdelimiterの設...
-
Linuxで、Pearコマンドが使えな...
-
mysqlでphpinfoと実際のバージ...
-
LOAD DATA LOCAL INFILE
-
下記プログラムの問題点は? ...
-
「addslashes」と「htmlspecial...
-
sqlite_escape_stringのアンエ...
-
接続ができません
-
SQLのVARCHARとVARCHAR2の違い
-
ODP.NETのバージョン確認
-
旧filemakerで和暦(令和など)...
-
ERROR 1045 (28000) (using pas...
-
副問合せにLIKE文を使う方法は...
-
INT型は金額の型に使用するべき...
-
like句を使って日本語を検索す...
-
postgreSQLのデータ型
-
RPMのmysqlとmysql-serverの違い
-
プライマリーキーの昇順でソー...
おすすめ情報