• 締切済み

PostgreSQLのデータインポートについて

初めて質問させていただきます。どうかお教えください。 今2つの別々の共用レンタルサーバーに、 それぞれPostgreSQLが組み込まれており、 それぞれデータ以外は、同じ状態になっています。 そこで、片方のサーバーからもう一方のサーバーへデータを移して、 同じデータの状態にしたいのです。 今までは、サーバー上にあるphpPgAdminというツールから、 テーブルのデータをエクスポートし、その後もう一つのサーバーの phpPgAdminにてインポートしていたのですが、 データの量が多くなったために、上記でエクスポートしたデータを テキストエディタで20分割し、少しづつインポートしなければならなくなりました。(データ量が多いとインポート時にphpPgAdminでエラーが発生するようです) 共用レンタルサーバーで利用できる 多量のデータをインポートできるツールなどはございませんでしょうか hiroko

みんなの回答

  • j_goshi
  • ベストアンサー率100% (1/1)
回答No.2

私の場合は、 テーブルのデータをエクスポートしたら、それをタブ区切りのテキストファイルに変換しています。 私は、テキストエディタを利用していますが、Excelで読み込んで、タブ区切りのテキストファイルで保存しても良いですよ。 ※テキストファイルに項目名を残さないように注意してください。  項目名がデータベースの型に合わない場合、エラーとなります。  ex. 数値で定義しているのに、文字になっているなど。 phpPgAdminで、テーブルを定義していれば、以下の通りでOKです。 テーブルを定義していない場合は、create table文で、定義してください。 以下は、すでに定義されているものとして解説しています。 $d_base=pg_connect("user=postxxx password='xxxxxxx' dbname=dbxxx");// PHPで、DBに接続 $file = "xxx.txt";//テキストファイルの場所とファイル名を指定 $fd = fopen ($file, "r");//読み込み専用で開く while(!feof($fd)){// ファイルの末尾まで実行 $line = fgets($fd, 4096); while (preg_match_all("/\"/", $line, $matches) % 2 and !feof($fd)){ $line .= fgets($fd, 4096); } $data = explode("\t", $line);// タブ区切りで配列へ代入 $sql = "INSERT INTO teblename (id, name, yomi, url, address, other, sort) VALUES (".$data[0].",'".$data[1]."','".$data[2]."','".$data[3]."','".$data[4]."','".$data[5]."','".$data[6]."')";// ご自分のDBに合わせて書き換えてください $result_flag = pg_exec($d_base, $sql); } fclose ($fd);

hiroko2009
質問者

お礼

ご回答 ありがとうございました。 結局自作するしかなさそうですね。 がんばってみます。

  • nda23
  • ベストアンサー率54% (777/1416)
回答No.1

普通はpg_dumpでエクスポート、pg_restoreまたはpsqlでインポート しています。上記キーワードでGoogleしてみてください。

hiroko2009
質問者

お礼

ご回答ありがとうございます。 共用レンタルサーバーなので、SQL-PLUS等がつかえないので、 インポート/エクスポートツールをPHPで自作してみます。

関連するQ&A

専門家に質問してみよう