EKsumic's Blog

let today = new Beginning();

Click the left button to use the catalog.

OR

PostgreSQL如何替換數據庫

----在日文版Windows10上----


首先,以管理員身份打開PowerShell

執行命令:

$env:PGCLIENTENCODING = "UTF8"

這是因爲,

在windows上用powershell上執行dump文件之前,得先切換語言環境。

因爲日文版作業系統默認好像是shift-js。

psql -U [用戶名] -d [數據庫名]

我們假設有一個用戶叫admin,它下面有一堆數據庫和視圖。

drop schema admin cascade;

DROP SCHEMA admin CASCADE; 是一條 SQL 命令,用於從 PostgreSQL 數據庫中刪除名為 admin 的模式(schema),以及該模式下的所有對象(如表、視圖、函數、索引等)。

 

具體來說:

  • DROP SCHEMA admin:指示要刪除名為 admin 的模式。
  • CASCADE:這個關鍵字告訴 PostgreSQL 也要刪除與這個模式相關的所有對象。如果不使用 CASCADE,而該模式下存在對象,刪除操作將會失敗。

例如,假設 admin 模式中有數個表和視圖,這個命令將會刪除 admin 模式以及其中的所有表和視圖。

需要注意的是,這是一個不可逆的操作,執行後無法恢復被刪除的模式和對象,所以在執行這條命令之前,務必確認不再需要這些數據,或已經做好了備份。


接著我們,給admin用戶裝上新的數據庫

\i D:/workspace/DataBase/20240718.dump;

注意,切換到UTF-8的環境后,使用左斜杠的符號來表示路徑。

\i,右斜杠i的這個應當保留。注意日文系統裏面打出的右斜杠是\。


這個操作不需要commit;但如果你不放心也可以commit一下。


然後,需要解釋的是,這個操作只面向需要快速刪除和更新數據庫的新手。**(僅供參考)


----在Red Hat Enterprise Linux 9.2上----

su - postgres
psql -U [用戶名] -d [數據庫名]
drop schema [用戶名] cascade;
\i /var/lib/pgsql/[數據庫名].dump;

\i  後面跟的你dump文件所在的路徑,通常我們把dump文件放在該路徑。*(你可能需要WINSCP把文件複製到這裏)

整個操作流程,無非是少了切換語言環境utf-8,因爲REHL9.2默認就是utf-8。

 

而最開始的做出切換用戶的動作,主要是統一性的問題。

一般來講,我們在Linux使用PostgreSQL時習慣性創建一個系統用戶postgres來管理數據庫。

*(而在windows上不必,你在windows上安裝PostgreSQL的時候大多數是用於測試環境,因爲如果你使用windows作爲你的server,那麽你爲什麽不用SQL Server呢?畢竟你都為windows server支付版權費了)

This article was last edited at 2024-07-22 13:02:16

Today's comments have reached the limit. If you want to comment, please wait until tomorrow (UTC-Time).

There is 18h21m03s left until you can comment.