• 締切済み

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/1415)
回答No.1

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

hiroko2009
質問者

お礼

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

関連するQ&A

  • いま自宅(linux)でPostgresqlでデータベースを構築し、1

    いま自宅(linux)でPostgresqlでデータベースを構築し、10万件規模のデータを管理しています。 このデータは日々更新されるのですが、この更新情報を 外部のレンタルサーバ内のPostgresqlに簡単にコピーする方法はないでしょうか? レンタルサーバ側はport=80/443くらいしか通さないので postgresqlに直接接続することができません。 今現在は、 自宅のpostgresqlからsql形式でdumpファイルを作成し、 その中身から比較的新しいSQLを抜き出し、  レンタルサーバ側のphppgadminをたちあげ、さきほどSQLをコピー&ペーストし実行 という面倒なことやってます。 上記を解決する ソフトやツール or レンタルサーバに置くWebアプリサンプル or 参考情報 などあればおねがいします。

  • データのエクスポート/インポート

    あるシノニムのデータをエクスポートして、その後、エクスポートしたファイルを一部編集して、インポートしたいと思っています。DBはOracle 9iです。 テーブルのエクスポート/インポートだと、CSEなどのツールで実施できるのですが、シノニムだと同様の操作では実施できませんでした。 初心者でも簡単にできる方法を教えてください

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

    SQL Server 2005 Developer Editionを使っています。 データのインポートに関して、ご教授をお願い致します。 ■質問 インポート(データベースを右クリックし、【タスク】より 【データのインポート】を選択している)機能について、 エラーを発生させずに、インポートをすることができるのか。 ■状況 エクセルにデータをエクスポートしたものを、インポートしようと したときに、エラーが発生します。そのテーブルデータは、 SQLでインサートすることはできるものの、インポート機能を使って インサートをすることができません。 ■知りたいこと ・インポートができない理由について。  ⇒インポートができる方法について。 ・インポート機能は、エラーがよく発生するものなのか。 以上、ご教授をお願い致します。

  • csvデータをPostgreSQLにコピー

    # rpm -qa | grep postgresql を実行してみると、 postgresql-python-7.2.2-1 postgresql-odbc-7.2.2-1 postgresql-7.2.2-1 postgresql-perl-7.2.2-1 postgresql-server-7.2.2-1 postgresql-devel-7.2.2-1 postgresql-contrib-7.2.2-1 postgresql-libs-7.2.2-1 postgresql-jdbc-7.2.2-1 postgresql-tcl-7.2.2-1 が表示されたため、 # postgres start を実行すると、 "root" execution of the PostgreSQL server is not permitted. The server must be started under an unprivileged user id to prevent more information on how to properly start the server. と表示されます。そこで、本サイトのQ&Aを参考にして、 # /etc/init.d/postgresql start を実行したところ、起動しました。Windows版では、pgAdminIIIのクエリーツールで以下のようにすれば、csvデータ(UTF8)をPostgreSQLの所定のテーブルにインポートできます。 COPY tablename FROM E'C:\\test\\testdata.csv' WITH CSV; Linux版ではどのようにするのでしょうか?

  • PostgreSQLのエクスポートについて

    現在、自宅から大学へ接続し、TeraTermからPostgreSQL8.1.23を利用しています。 なので、自宅のプログラムファイルの中にはpgsqlというファイルがありません。 そこで、作成したテーブルを自宅のPCでエクスポートしたいのですができません。 <インポートを実行した場合> a=>\copy example from import.txt; \. と表示され、なぜか違うテーブルのデータが増える。 <エクスポート> a=>\copy example to export.txt; a=> なにも表示されず、デスクトップに用意したexport.txtには、データが書き込まれません。 この場合、import.txt・export.txtのファイルがデスクトップにあるからいけないのでしょうか?

  • PostgreSQLで使えるツール

    PostgreSQLで使えるツール データセンターにPostgreSQLの入ったサーバを置いており、リモートでデータベースの管理や CSVでのデータの挿入や編集等を行いたいのですが、何かよいツールはないでしょうか。 CSEが使えるかと思って試したのですが、データセンターの設定で、ODBC接続ができません。 何卒、よろしくお願いします。

  • 改行を含んだデータのインポート

    SQL Server 2005 Developer Editionを使っています。 インポートについて、皆様の知識のご教授をお願いします。 (1)、(2)と二つありますが、どちらか一方の回答でも 構いませんので、よろしくお願いします。 (1)Excelインポートによる取込について まず、Excelにテーブルデータをエクスポートしました。 データには、改行されているものレコードもあります。 そのExcelファイルをエクスポートしたテーブルに インポートしようとすると、エラーが発生します。 また、改行されているデータのレコードだけを 手動でコピー&ペーストしても、貼り付けることが できない状態です。さらに、Excel上のデータを直接コピーし、 該当のレコードの箇所に張り付けても、1行目だけしか 貼付けができない状態です。 (2)テーブル間の改行を含むデータ移行について AとBという、テーブル名だけが異なり、列名やデータ型が 同じテーブルだとします。 ここで、BからAテーブルへデータ移行させる際に、 改行されているデータについても、正常に移行できるように するには、どういう手順を踏めばいいか教えて頂きたく思います。 Bテーブルの列を全てコピーし、Aテーブルに貼り付けても、 うまく貼り付けることができませんでした。 改行されているデータは、どうやったら、テーブルに インポートできるのかを教えて頂けないでしょうか。

  • phpPgAdminに相当するツールについて

    今までPostgreSQLを使用しており、遠隔地に設置してあるデータベースの操作はブラウザ上からphpPgAdminを使用しておりました(例:レンタルサーバーなど)。 このたびOracleを使用するに当たり、同様の事を行いたいと思いましたが、phpPgAdminに相当するツールにどのような物があるかわからなかったため、アドバイスいただける方がいらっしゃいましたら、ご教示の程よろしくお願いします。 以上、よろしくお願いします。

  • データのインポートに失敗します。

    SQL Server2005を使用しているのですが、データのインポート時に下記のエラーメッセージが出て失敗します。 警告 0x802092a7: データ フロー タスク: 長さ 50 のデータ フロー列 "列 XXX" から、長さ 48 のデータベース列 "ABCDEF" にデータを挿入することにより、切り捨てが行われる可能性があります。 (SQL Server インポートおよびエクスポート ウィザード) このエラーの回避方法をご存知の方がいらっしゃいましたら教えてください。よろしくお願いします。

  • phpMyAdminでのインポートができずに困っております

    <利用環境> ・レンタルサーバー/ラピッドサーバー RV-310 ・MYSQL/MySQL 4.1.18 ・phpMyadmin/phpMyAdmin 2.6.4-pl3 現在MovavleType3.2から3.3への移行を進めております。 普通だったらアップグレードとなるのですが、ラピッドサイトではMT3.3へのアップグレードはサポート対象外で、サイトに記述されておりませんでした。 代わりに、インストールの手順が記述されておりましたので、新たにMT3.3をインストールして、そこにphpMyAdminでMT3.2からエクスポートしたデータをMT3.3に持ってくるという作業を取ることにしました。 MT3.3のインストール、MT3.2のデータのエクスポートまでは順調に進んだのですが、インポートを行おうとすると、「SQL 照会無し」となってしまいます。 インポートの方法としては、SQLタブの「テキストファイルの場所:」というところからエクスポートしたデータを選択して、読み込むという手順を取っております(私が調べた限りでは、このバージョンのphpMyAdminのインポート手順はこの様なものでした)。 何分初心者なもので、ケアレスミスなのか、バージョン違いのMTをインポート・エクスポートする事自体間違っているのか否かもわからず、困り果てております。 もしお分かりの方がいればアドバイスいただければ幸いです。

    • ベストアンサー
    • MySQL