- 締切済み
PostgreSQLのデータインポートについて
初めて質問させていただきます。どうかお教えください。 今2つの別々の共用レンタルサーバーに、 それぞれPostgreSQLが組み込まれており、 それぞれデータ以外は、同じ状態になっています。 そこで、片方のサーバーからもう一方のサーバーへデータを移して、 同じデータの状態にしたいのです。 今までは、サーバー上にあるphpPgAdminというツールから、 テーブルのデータをエクスポートし、その後もう一つのサーバーの phpPgAdminにてインポートしていたのですが、 データの量が多くなったために、上記でエクスポートしたデータを テキストエディタで20分割し、少しづつインポートしなければならなくなりました。(データ量が多いとインポート時にphpPgAdminでエラーが発生するようです) 共用レンタルサーバーで利用できる 多量のデータをインポートできるツールなどはございませんでしょうか hiroko
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- j_goshi
- ベストアンサー率100% (1/1)
私の場合は、 テーブルのデータをエクスポートしたら、それをタブ区切りのテキストファイルに変換しています。 私は、テキストエディタを利用していますが、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);
- nda23
- ベストアンサー率54% (777/1416)
普通はpg_dumpでエクスポート、pg_restoreまたはpsqlでインポート しています。上記キーワードでGoogleしてみてください。
お礼
ご回答ありがとうございます。 共用レンタルサーバーなので、SQL-PLUS等がつかえないので、 インポート/エクスポートツールをPHPで自作してみます。
お礼
ご回答 ありがとうございました。 結局自作するしかなさそうですね。 がんばってみます。