現在、phpMyadmin で、SQL、csv、XML形式でデータをダウンロードしてあります。Postgresのほうは、サーバーにphpPgadminをインストール後にログインできませんでしたので、コマンドでリストアするしかないかと思います。
phpMyadmin でエクスポートしたデータだと都合が悪い場合は、ダンプするコマンドも教えていただければうれしいです。
用語をいろいろ書きましたが、知識はまったくの素人です。コマンドを使うソフトもほとんどさわったことがありません。
よろしく宜しくお願い致します。
PostgreSQLのCOPY文で、csvファイルとデータベース間のインポート/エクスポートを行えます。
まずは、使用例が記載されたサイト
PostgreSQL 入門第2回:PostgreSQL 有効活用術
こちらは、マニュアルの掲載箇所です。
http://www.postgresql.jp/document/pg820doc/html/sql-copy.html
※ここ数日間、マニュアルを公開している日本PostgreSQLユーザ会のサーバ移行トラブルで接続できませんでしたが、現在は復旧しています。
ご丁寧にご回答いただき、ありがとうございます。
申し訳ございません。質問の文章の説明が足りませんでした。
状況を説明いたしますと、2つのサーバにそれぞれ別のデータベースが存在していたのですが、そのうち片方のサーバ(移行元)の契約を止めて、1つのサーバ(移行先:さくらインターネットのレンタルサーバ)上で管理することになったので、次のURLを参考に移行元のphpMyAdminからデータベースをエクスポートしました。
http://www.koikikukan.com/archives/2006/06/12/
そして、それを移行先のサーバにphpPgAdminを設置してインポートしようと考えていたのですが、"ログインに失敗しました" というエラーメッセージが表示され、ログインができません。
仕方がないので、phpPgAdminでのインポートをあきらめ、コマンドラインで試みましたが、次のエラーメッセージが大量に出力されてしまいます。
# psql -U userinfo userinfo < userinfo.sql
ERROR: syntax error at or near "`" at character 13
LINE 1: INSERT INTO `user_list_30` (`user_id`, `state_id`, `city_id`...
`(バッククォート)が良くないのかと思い、"(ダブルクォート)に置換して試してみましたが、今度は別のエラーが出て失敗してしまいました。
以下はその一部です。
NOTICE: table "user_list_38" does not exist, skipping
DROP TABLE
ERROR: syntax error at or near "serial" at character 56
LINE 2: "user_id" int NOT NULL serial,
^
ERROR: relation "hosp_list_38" does not exist
WARNING: nonstandard use of escape in a string literal at character 448
HINT: Use the escape string syntax for escapes, e.g., E'\r\n'.
何か良い解決策をご存知でしたら、ご教授いただけないでしょうか?
宜しくお願い致します。
#2への返答は、「SQL」での移行をしようとした時ですよね?
PostgreSQLとMySQLには、それぞれ独自仕様の部分があります。
ERROR: syntax error at or near "`" at character 13
LINE 1: INSERT INTO `user_list_30` (`user_id`, `state_id`, `city_id`...
`(バッククォート)が良くないのかと思い、"(ダブルクォート)に置換して試してみました
これは、適切な対処です。
標準SQLや主要なRDBMSでは、表や列の名前に予約語と同じキーワードを使用したり、特殊記号を使う場合、「"」(二重引用符)を使いますが、MySQLでは「`」(バッククォート)を使うという独自仕様になっています。
NOTICE: table "user_list_38" does not exist, skipping
DROP TABLE
これは、移行先に表を未定義であるのに、DROP TABLEしようとしたということで、問題ありません。
ERROR: syntax error at or near "serial" at character 56
LINE 2: "user_id" int NOT NULL serial,
「serial」はPostgreSQLの独自機能ですが、phpMyAdminでMySQLからエクスポート(SQLを生成)後、ご自身で「auto_increment」から修正したのでしょうか?
もしそうであれば、この前後のSQLの構文に問題があるのではないでしょうか?
primary keyにしてますよね?
なお、PostgreSQLのバージョンにより、確か仕様変更(「serialなら自動的にprimary keyと仮定されたのが、明示指定が必要になった(?)」とかだったかな)があったと思います。
ERROR: relation "hosp_list_38" does not exist
これも移行先で未定義なのに、削除や変更をしようとしたからですね。
ただ、WARNINGでなくERRORなので、MySQLとPostgreSQLでの非互換の部分でのエラーの可能性が高いかも知れません。
(実際のSQLを見ないと、判断はできません)
MySQLとPostgreSQLは、それぞれバージョンは何でしょう。
また、OSは何を使っているのでしょう?
また、文字コードは、何なのでしょうか?
まず、SQLレベルでの移行の場合、上述のように、特にDDL(表定義やインデクス定義など)で独自機能が多いです。そのため、何箇所か手作業による変更が必要になります。
#2でも回答したCSV形式のファイルでの移行は、どうでしょうか?
ありがとうございます。案外簡単にできるのでしょうか。
すみません、sedで書き換えるにはどうすればいいのでしょうか?
形式は、SQLがいいのでしょうか?
まったくの素人同然ですので、具体的に教えていただけると、ありがたいです。
宜しくお願い致します。