[pgsql-jp: 33922] データベースのデータ移行について。

shimotori simotori @ sofu.co.jp
2004年 8月 25日 (水) 18:07:07 JST


始めまして、霜鳥 恵子と申します。
  今回始めて、こちらにメールを出しますが、ご教授の方を宜しくお願い
致します。

  初心者的な質問で申し訳ありませんが、つい最近、Red Hat Linx 9をセッ
トアップしました。
  以前(かなり昔)、友達がインストールしました Red Hat Linux 7.0.1Jのサ
ーバから友達のシステムを私がインストールした、 Red Hat Linux 9に移行
しました。
  システム(php)の方は動きましたが、データベースのデータ移行(pg_dump)
で、Postgresのバージョンが違うため、データベースのデータ移行に失敗し
ました。


【作業手順】
    1. Red Hat Linux 7.0.1JサーバよりPHPのソースとPostgresのデータベ
       ースのデータをRed Hat Linux 9にデータ移行。
       ○ pg_dumpコマンドでデータベースデータをバックアップ。
           $ pg_dump My_Diary > 20040820_My_Diary.out
           $ ls
           $ 20040820_My_Diary.out

                ↓

    2. Red Hat Linux 9でシステム稼動確認。(システムは、動きました)

                ↓

    3. データベースのデータ復元として、Red Hat Linux 9 のデータベース
       に20040820_My_Diary.outを復元をします。

       ○ 作業手順&エラー内容?
           3-1. $ createdb -E EUC-JP My_Diary
                CREATE DATABASE
           3-2. $ psql My_Diary < 20040820_My_Diary.out
                  You are now connected as new user postgres.
                ERROR: stat failed on file '/usr/local/pgsql/lib/plpgsql.so': そのようなファイルやディレクトリはありません
                NOTICE:  CreateProceduralLanguage: changing return type of function plpgsql_call_handler() from OPAQUE to
LANGUAGE_HANDLER
                CREATE LANGUAGE
                CREATE FUNCTION
                CREATE FUNCTION
                CREATE FUNCTION
                CREATE FUNCTION
                CREATE FUNCTION
                ERROR:  copy: line 323, Invalid EUC_JP character sequence found (0xc000)
                lost synchronization with server, resetting connection
                ERROR:  copy: line 827, Invalid EUC_JP character sequence found (0xa500)
                lost synchronization with server, resetting connection
                ERROR:  copy: line 5, Invalid EUC_JP character sequence found (0xbb00)
                lost synchronization with server, resetting connection
                CREATE INDEX
                CREATE INDEX
                CREATE INDEX
                CREATE INDEX
                NOTICE:  CreateTrigger: changing return type of function functrgbdelmstuser() from OPAQUE to TRIGGER

  実行した結果、上記のようなエラー内容が発生しました。
  Red Hat Linux 7.0.1JサーバとRed Hat Linu x 9の環境(パス)が違う為、
  「plpgsql.so」がありませんと言われました。

    ERROR: stat failed on file '/usr/local/pgsql/lib/plpgsql.so': そのようなファイルやディレクトリはありません( ソース版のパス)
                                                       ↓
                                       '/usr/lib/pgsql/plpgsql.so'( RPM版のパス)に修正。

  あと、「plpgsql_call_handler()」がわかりませんと言っているよう
  に思われます?。(^^;???
  やはり、ソース版の環境からRPM版の環境にしたのがまずいのですかね。(>_<)/
  このような場合、どうように対処したら宜しいのかご教授下さい。


【データベース移行対策】
    データベースのデータ移行対策としまして、下記のように考えましたが
    他に、良い方法があったら教えて下さい。

    ■ 対策1
        1. 「.CSV」ファイルとして、データベースのデータを出力する。
           Red 7の方で、ブラウザ画面より、データベースのデータを「.CSV」ファイル
           として出力する画面を作成してテーブル件数分、「.CSV」ファイルを
           ローカルPC上にDLする。

        2. Red 9の方で、予め必要なだけのテーブルを作成し、「.CSV」ファ
           イル取り込み用のWeb画面を作成する。
           1 の時にDLした、「.CSV」ファイルを予め作成した。 Web画面で取
           り込み各テーブルに書き込む。

        ※ この場合だと、テーブルの件数が多いとかなり時間がかかります。
           また、「.CSV」ファイルのDLや取り込みは手動でしますので取り込み忘
           れ等が発生する確率が高いです。

    ■ 対策2
           Red 7とRed 9のpg_dumpファイル(テキストエディタで展開)を比
           較し、Red 9用にバックアップファイルを書き換える。

        ※ 地道ですが、確実な方法だと思います。

    ○ シェルスクリプトを利用して、自動的にデータベースのデータを出
       力、取り込むやり方の方がいいと思いますが、いい案が浮かびません。


【開発( セットアップ環境)】
    Red Hat Linx 7.0.1J( あすか §^。^§/)
        apache_1.3.27( ソース版)
        postgresql-7.1.3( ソース版)
        php-3.0.18-i18n-ja-2( ソース版)
        phplib-7.2d( シンボリックリンクのみ)

    Red Hat Linx 9( けいこ (^。^)/)
        httpd-2.0.40-21( RPM版 ディフォルトインストール)
        postgresql-7.3.2-3( RPM版 ディフォルトインストール)
        php-4.2.2-17( RPM版 ディフォルトインストール)

    どうか、ご教授を宜しくお願いします。


*〜*〜*〜**〜*〜*〜**〜*〜*〜**〜*〜*〜**〜*〜*〜*
keiko
*〜*〜*〜**〜*〜*〜**〜*〜*〜**〜*〜*〜**〜*〜*〜*




pgsql-jp メーリングリストの案内