2014-09-29 59 views
2

我以前只使用過MySQL。 Postgres對我來說有點不同。我正在嘗試爲OSX使用Postgres.app。我有一個來自我們的開發服務器的數據庫轉儲,我想創建正確的用戶角色並將數據庫導入到本地計算機,以便我可以在家中進行開發(無法遠程訪問數據庫)。在OSX上導入PostgreSQL轉儲

認爲我創建了用戶。 \ du顯示具有CreateDB權限的相應用戶。然後我用\ i〜/ dump.sql這似乎已經導入了數據庫。但是,當我使用\ l列出數據庫時,它不顯示。於是我試着用的psql -U 用戶名登錄,但隨後告訴我:「FATAL:數據庫用戶名不存在」那是不是登錄正確的開關?這就是幫助所說的。

我對簡單的事情感到沮喪,所以我很感激任何幫助。使用Postgres.app,我怎樣才能用密碼創建必要的用戶並導入數據庫?謝謝你的幫助!

回答

2

這聽起來像你可能已經加載轉儲到你連接到的數據庫。如果您在啓動psql時沒有指定數據庫,它將是以您的用戶名命名的數據庫。這取決於pg_dump在創建轉儲文件時使用的選項。

嘗試:

psql -v ON_ERROR_STOP=1 

CREATE DATABASE mynewdb TEMPLATE template0 OWNER whateverowneruser; 
\c mynewdb 
\i /path/to/dump/file.sql 

就個人而言,我建議您始終使用pg_dump -Fc創建自定義格式轉儲而不是SQL轉儲。他們是lot更易於使用,而pg_restore比使用psql恢復轉儲好得多。

+0

謝謝!這似乎解決了它。我一定要記住將來使用'pg_dump' /'pg_restore'的信息。 – Steve 2014-09-30 02:01:20

1

-U <username>對於指定用戶名爲psql是正確的,但最後一個標記是數據庫名稱。這意味着你沒有指定用戶,並且數據庫是用戶名。嘗試添加數據庫名稱後,即psql -U username database

請參閱psql doc瞭解有關無數開關psql支持的更多信息。

+0

謝謝您的信息!我認爲我對postgres的經驗不足一直是我的絆腳石。 – Steve 2014-09-30 02:02:40

+0

當然,沒問題。 – khampson 2014-09-30 02:11:24