• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:PHPからMySQL・異なるDBにコピー)

PHPからMySQL・異なるDBにコピーする方法

このQ&Aのポイント
  • PHPからMySQL・異なるDBに接続し同じ構造のテーブルのデータをコピーすることは可能ですか?
  • クエリが実行されず「コピーできません」が表示される問題が発生しています。
  • どのようにすればコピーできるか教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • t_ohta
  • ベストアンサー率38% (5238/13705)
回答No.2

table2 からセレクトした値を配列に入れて置いて、table1に順番にインサートする。 mysql_select_db("db2", $connect2); を実行したら、MySQL関数群は $connect2 の db2 に対してクエリーを実行するので $connect1 の db1 にアクセスできません。

jpncan15
質問者

お礼

t_ohtaさん ありがとうございます。 一括コピーが出来ないので、教えていただいた通り「insert into table名(項目名1,項目名2) values ("データ内容1","データ内容2")」を件数分地道にやっていこうと思っています。 データ件数がそこそこあり、データをcsvで書き出すと7MBもあるので、時間がかかりそうですが。。 ありがとうございました。

その他の回答 (3)

  • bm_hiro
  • ベストアンサー率51% (200/388)
回答No.4

とりあえず、phpMyAdminに投げてみただけですが、そちらの書き方で問題なくコピーされることは確認しました。 ↓ これ、$connect1 を決め打ちしてるのが原因ってことはないですかね? $result = mysql_query($sql, $connect1)or die("コピーできません"); ↓ こうしてみたら どんなもんになるでしょう? $result = mysql_query($sql)or die("コピーできません"); あとyambejpさんがご指摘の通りですが、SQL文の末尾のセミコロンは複数行を実行させようとしない限り、必要ありません。 ちなみに、サーバーが異なってたりはしませんよね?

jpncan15
質問者

お礼

bm_hiroさん ご回答ありがとうございます。 ご指摘の通りphpmyadminではコピーできたので問題なく出来ると思ったのですが phpから実行するとコピー出来ず悩んでいました。 (phpmyadminにログインするID、passを使用しても出来ないので権限が無い(?)のかもしれません) $result = mysql_query($sql)or die("コピーできません"); も試してみましたが、コピー出来ず。。 サーバーが異なっているかどうかはレンタルサーバーなので不明です。 件数がそこそこあり、データをcsvで書き出すと7MBもあるので、できれば一括コピーをしたかったのですが「insert into table名(項目名1,項目名2) values ("データ内容1","データ内容2")」を件数分地道にやっていこうと思っています。 ありがとうございました。

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.3

>$sql = "INSERT INTO `db1` . `table1` SELECT * FROM `db2` .`table2`;"; SQL文のケツのセミコロンが不要 $sql = "INSERT INTO `db1` . `table1` SELECT * FROM `db2` .`table2`";

jpncan15
質問者

お礼

yambejpさん ご指摘ありがとうございます。 セミコロンを削除しましたが、結果はコピー出来ず、でした。

  • STICKY2006
  • ベストアンサー率29% (1536/5269)
回答No.1

>>$sql = "INSERT INTO `db1` . `table1` SELECT * FROM `db2` .`table2`;"; PHP、MySQLには詳しくないので文法的なところは一切知りませんが、 insert句を書く際には、面倒でも insert into tabel1(項目1,項目2,項目3) select 項目1,項目2,項目3 from table2 と書いておくのが妥当かと。 >>同じ構造のテーブル 「同じ構造」と言っても、オートナンバー型のようなものは、そもそも入らないので、「項目1」が自動でナンバリングされるもの。 だったら、対象外にしなきゃいけなかったりしますし。

jpncan15
質問者

お礼

STICKY2006さん ありがとうございます。 ご指摘の通り insert into tabel1(項目1,項目2,項目3) select 項目1,項目2,項目3 from table2 を使用することにしました。 テーブルの構造は、phpmyadminでtable2の構造をSQL文で書き出したものを使用しているので構造は同じです。autoincrementを使用していません。

関連するQ&A