1

私の目標は、サーバーからproject_develデータベースに.sqlダンプをインポートすることです。.sqlファイルからデータをロードするときに-d[databasename]オプションが無視されているように見えるという苛立たしい問題に遭遇しました。代わりに(出力の約12行を見ることができます)、.sqlファイルはインポーターに別のデータベースにインポートするように指示している可能性があります。なぜこれが起こっているのか、そしてデータを-dで指定したデータベースに強制的に入れる方法についての手がかりはありますか?

ここでの私の目標は、本番データをローカルにロードして何かをデバッグすることだけなので、database.ymlの開発データベース名をproject_prodに変更することで、最終的にバンドエイドを追加しました。

インポートに使用するコマンド:

YeastFlakes:newproject new$ psql -h /tmp -d project_devel -f prod_dump_2013-02-07_09-00.sql 

出力:

You are now connected to database "postgres" as user "new".
    SET
    SET
    SET
    psql:prod_dump_2013-02-07_09-00.sql:15: ERROR:  role "project" already exists
    ALTER ROLE
    psql:prod_dump_2013-02-07_09-00.sql:17: ERROR:  role "postgres" already exists
    ALTER ROLE
    psql:prod_dump_2013-02-07_09-00.sql:19: ERROR:  role "replication" already exists
    ALTER ROLE
    psql:prod_dump_2013-02-07_09-00.sql:31: ERROR:  database "project_prod" already exists
    REVOKE
    REVOKE
    GRANT
    GRANT
    You are now connected to database "project_prod" as user "new".
    SET
    SET
    SET
    SET
    SET
    SET
    CREATE EXTENSION
    COMMENT
    SET
    SET
    SET
    psql:prod_dump_2013-02-07_09-00.sql:85: ERROR:  relation "active_admin_comments" already exists
    ALTER TABLE
    psql:prod_dump_2013-02-07_09-00.sql:99: ERROR:  relation "active_admin_comments_id_seq" already exists

出力はしばらく続きます...。

4

2 に答える 2

4

PostgreSQLのドキュメントは、SQLのダンプ/復元に対して非常に単純なアプローチを取っているようです。

Dump: 

$ pg_dump dbname > outfile

Restore:

$ psql dbname < infile

その方法を使用しない特別な理由はありますか?

于 2013-02-07T18:29:09.283 に答える
0

それはあなたの出力の上部にかなりはっきりと言っています:

You are now connected to database "postgres" as user "new".
...
You are now connected to database "project_prod" as user "new".

バックアップの最初の20行ほどを見ると、「接続」コマンドのように見えるものはないと思いますか?おそらく、ユーザー「new」としてデータベース「postgresql」に、続いてユーザー「new」としてデータベース「project_prod」に別のデータベースに移動しますか?

ああ-そして、実際にファイルの内部を調べるつもりがないのであれば、生のSQLとしてダンプする意味はありません。圧縮され、pg_restoreを使用して個々の/選択された要素を復元するオプションを提供する「カスタム」形式を使用することもできます。詳細については、広範囲にわたる詳細なマニュアルを参照してください。

于 2013-02-07T18:38:26.547 に答える