跳至主要内容

[PSQL] 匯入練習 dvdrental 資料(Load PostgreSQL Sample Database)

TL;DR;

# STEP 1:先下載 sample database (https://www.postgresqltutorial.com/postgresql-sample-database/)
# STEP 2:下載的檔案會是 .zip 需要使用「The Unarchiver」解壓縮後才會變成 .tar 檔
$ brew install --cask the-unarchiver # 如果還沒安裝

# STEP 3:建立 dvdrental database
$ createdb -O pjchender -E utf8 dvdrental

# STEP 4:匯入 dvdrental.tar
$ pg_restore -c -d dvdrental dvdrental.tar

資料檔

方法一:使用指令匯入資料

  • 下載解壓縮後裡面有一個 dvdrental.tar 檔案即是我們要匯入的檔案,如果使用 MAC 預設的解壓縮程式可能會沒看到 .tar 的檔案,**使用「The Unarchiver」**解壓縮即可看到此檔案。

  • 若資料庫還沒建立,須先建立資料庫:

    # createdb 建立 database
    # createdb -O <owner> -E <encoding> <database>
    $ createdb -O pjchender -E utf8 dvdrental
  • 使用指令將檔案匯入資料庫:

    # 匯入資料
    # pg_restor -d <database> <restore_file>
    # -c 先清空該 database
    $ pg_restore -c -d dvdrental dvdrental.tar
  • 若匯入的過程出現錯誤「FK CONSTRAINT store store_manager_staff_id_fkey postgres」,可以再重複執行一次該指令即可

  • 若匯入的過程中出現錯誤訊息「psql: FATAL: role “postgres” does not exist」,則需要為該 database 新增使用者 postgres 後再重新 pg_restore 一次:

    $ psql dvdrental             # 進入該 database
    \du # 檢視有哪些使用者
    CREATE USER postgres SUPERUSER; # 建立使用者 postgres
    \q # 離開 psql IRB

psql: FATAL: role “postgres” does not exist @ StackOverflow

方法二:使用 pgAdmin 匯入資料

Database Structure

PostgreSQL Sample Database Diagram