【Database】SQL 匯出Schema, Data

紀錄資料庫的幾種結構或資料的匯出、遷移方法

SQL Server

SQL 語法匯出

使用SSMS 連線到資料庫,對資料庫點右鍵→工作→產生指令碼。
接著就依照畫面指示操作,設定匯出資料或是資料與結構宜並匯出。

SQL 檔案搬移

使用SSMS 連線到資料庫,對資料庫點右鍵→內容。
可以看到資料庫檔案放置的位置,通常有.mdf .log 兩個檔案。
關閉連線之後,可以直接搬移或複製這兩個檔案使用。

如果資料庫存在版本差異,則可能需要進行升級作業。
// todo: SQL Server mdf upgrade

PostgreSQL

用工具匯出

使用PostgreSQL 提供的工具 "pgAdmin":https://www.pgadmin.org/
安裝之後裡面會有執行檔pg_dump.exe (匯出用), psql.exe (連線至資料庫使用)
匯入匯出語法可以參考以下範例:

// 匯出:pg_dump.exe -U {帳號} -w -h {資料庫IP} -d {資料庫名稱} -f {儲存檔案位置}
pg_dump.exe -U postgres -w -h 192.168.0.10 -d exampleDB -f C:\Users\User\Desktop\exampleDB.sql
// 匯入:psql -U {帳號} -w -h {資料庫IP} -d {資料庫名稱} -f {儲存檔案位置}
// 注意匯入需要先創建空的資料庫
psql -U postgres -w -h 192.168.0.10 -d exampleDB -f C:\Users\User\Desktop\exampleDB.sql

這邊的範例是完整的資料庫匯入匯出,如果只需要結構或資料,可以參考官方文件的詳細參數
https://www.postgresql.org/docs/current/app-pgdump.html

另外一般來說以上操作時,如果參數為 -W (大寫W) 是需要打密碼的,如果參數 -w (小寫W) 則可以不用打密碼。
但因為使用-w 無法在command 打密碼,且有設定帳號密碼驗證的話,可以建立pgpass.conf 檔案,跳過打密碼的步驟
可以進一步達到用寫程式操作備份或匯出之類的功能
https://docs.postgresql.tw/client-interfaces/libpq-c-library/33.15.-mi-ma-dang

參考資料:
https://dotblogs.com.tw/mis2000lab/2015/12/25/sql_server_export_insert_azure
https://www.youtube.com/watch?time_continue=61&v=t50M_s8QnkE