Postgresql
如何在特定模式中轉儲區分大小寫的表
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 的表,但現在它只會轉儲預設搜尋路徑中可見的任何一個。