Postgresql

如何在特定模式中轉儲區分大小寫的表

  • May 27, 2019

app_auth.User我正在嘗試轉儲通過執行以下命令命名的區分大小寫的表

pg_dump --schema=app_auth -t '"User"' -U em3local -h 127.0.0.1 -Fc -a -f <path> <dbname>

但我返回的是:

pg_dump: No matching tables were found

如果我實際查詢我的數據庫,則該表確實存在:

<dbname>=# SELECT * FROM app_auth."User";
username | email | password | name | surname | lang | resettoken | userinfo_id | state | tos_accepted | id 
----------+-------+----------+------+---------+------+------------+-------------+-------+--------------+----

任何提示?

當您指定要解除安裝的架構名稱時,這並不意味著它將是搜尋對象的預設架構:

nd@postgres=# create schema foobar;
CREATE SCHEMA
nd@postgres=# create table foobar."Foo"();
CREATE TABLE
nd@postgres=# \! pg_dump --schema=foobar -t "Foo"
pg_dump: no matching tables were found

所以你應該完全限定表名:

nd@postgres=# \! pg_dump --schema=foobar -t 'foobar."Foo"'
--
-- PostgreSQL database dump
--
... etc ...

文件摘錄(草書和粗體是我的):

-n 和 -N *(–schema)*開關在使用 -t 時無效,因為無論這些開關如何,都將轉儲 -t 選擇的表,並且不會轉儲非表對象。

以前,寫 -t tab 會轉儲所有名為 tab 的表,但現在它只會轉儲預設搜尋路徑中可見的任何一個

引用自:https://dba.stackexchange.com/questions/179608