在不同類型的數(shù)據(jù)庫(kù)之間遷移數(shù)據(jù)并非易事。在本文中,我們將比較幾種從 SQL Server 轉(zhuǎn)換到 PostgreSQL 的方法。Microsoft SQL Server 是一個(gè)很棒的數(shù)據(jù)庫(kù)引擎,但在某些情況下它有缺點(diǎn)。免費(fèi)的 Microsoft SQL Server Express 可以成功用于小型數(shù)據(jù)庫(kù)。
SQL Server Express 的限制:
- 數(shù)據(jù)庫(kù)引擎使用的最大內(nèi)存為 1GB。
- 10GB 最大數(shù)據(jù)庫(kù)大小。
- 1MB 最大緩沖區(qū)緩存。
- CPU 使用一 (1) 個(gè)插槽或四 (4) 個(gè)內(nèi)核中的較小者(SQL 用戶連接數(shù)不受限制)。
對(duì)于大型數(shù)據(jù)庫(kù),您可能需要從標(biāo)準(zhǔn)版許可證開始獲取 MSSQL Server 的付費(fèi)版本。SQL Server 的成本取決于用戶數(shù)量和數(shù)據(jù)庫(kù)的大小。
如果您甚至買不起標(biāo)準(zhǔn)的 SQL Server 許可證,PostgreSQL 是一個(gè)替代方案。
PostgreSQL 是完全免費(fèi)的,因此許可證成本是 PostgreSQL 相對(duì)于 Microsoft SQL Server 的主要優(yōu)勢(shì)。
SQL Server 和 PostgreSQL 之間數(shù)據(jù)庫(kù)遷移的開源工具
手動(dòng)數(shù)據(jù)遷移很麻煩。一個(gè)好的數(shù)據(jù)庫(kù)遷移工具應(yīng)該提示用戶選擇要遷移的對(duì)象,例如表、索引、主鍵和外鍵約束。
幸運(yùn)的是,有一些工具可以自動(dòng)化枯燥的手工工作。
1、pgloader 是 一個(gè)著名的開源工具,它使用COPY命令將SQL Server中的數(shù)據(jù)導(dǎo)入PostgreSQL,加載數(shù)據(jù)、索引和外鍵,并按預(yù)期將數(shù)據(jù)轉(zhuǎn)換為PostgreSQL。
- pgloader 將來(lái)自 MS SQL、SQLite、MySQL、CSV 等各種來(lái)源的數(shù)據(jù)加載到 PostgreSQL 中。
- 它在 PostgreSQL 許可下獲得許可,可以免費(fèi)使用。
- pgloader 是一個(gè)跨平臺(tái)的軟件。
- Docker 鏡像可用。
2. Sqlserver2pgsql是用Perl 編寫的。這是另一個(gè)開源遷移工具,用于自動(dòng)將 Microsoft SQL Server 數(shù)據(jù)庫(kù)轉(zhuǎn)換為 PostgreSQL 數(shù)據(jù)庫(kù)。
- 它將 SQL Server 模式轉(zhuǎn)換為 PostgreSQL 模式
- 如果需要,它可以創(chuàng)建一個(gè) Pentaho Data Integrator (Kettle) 控制臺(tái)來(lái)將所有數(shù)據(jù)從 SQL Server 遷移到 PostgreSQL。
部分開源工具的缺點(diǎn)
- 上面提到的工具是命令行實(shí)用程序,因此它們沒(méi)有圖形界面。對(duì)于那些被終端嚇倒的人來(lái)說(shuō),它們并不好用。
- 這些工具僅限于可以將 PostgreSQL 配置為目的地的單向遷移
DBConvert 數(shù)據(jù)庫(kù)遷移軟件
適用于 SQL Server 和 PostgreSQL 的 DBConvert 和 DBSync 是流行的軟件工具,可最大限度地減少 SQL Server 和 PostgreSQL 數(shù)據(jù)庫(kù)之間的數(shù)據(jù)庫(kù)轉(zhuǎn)換和同步挑戰(zhàn)。
用于 SQL Server 和 PostgreSQL 的 DBConvert/DBSync 優(yōu)點(diǎn):
- DBConvert 工具是高度可定制的,允許您使用全面的圖形界面快速輕松地將數(shù)據(jù)從 Microsoft SQL Server 導(dǎo)出到 Postgres。DBConvert Applications 指導(dǎo)您完成幾個(gè)步驟,從連接到源和目標(biāo)數(shù)據(jù)庫(kù)、配置遷移參數(shù)以及安排后續(xù)運(yùn)行。
- 在 DBConvert 產(chǎn)品中,目標(biāo)數(shù)據(jù)庫(kù)以樹的形式呈現(xiàn),這大大簡(jiǎn)化了設(shè)置的配置。DBConvert 軟件經(jīng)過(guò)驗(yàn)證的優(yōu)勢(shì)在于,非專業(yè)用戶也可以有效地使用它。
- 自動(dòng)驗(yàn)證系統(tǒng)會(huì)在遷移前仔細(xì)檢查源數(shù)據(jù)庫(kù)的結(jié)構(gòu)和關(guān)系,確保不會(huì)丟失或損壞您的任何數(shù)據(jù),并保證無(wú)風(fēng)險(xiǎn)和無(wú)錯(cuò)誤的數(shù)據(jù)傳輸。
- 將源數(shù)據(jù)庫(kù)復(fù)制到目標(biāo)數(shù)據(jù)庫(kù)后,使數(shù)據(jù)庫(kù)與更新、插入和刪除同步功能保持同步。
- DBSync 應(yīng)用程序在 SQL Server 和 PostgreSQL 之間執(zhí)行雙向復(fù)制(其中兩個(gè)不同的數(shù)據(jù)庫(kù)同時(shí)相互復(fù)制更改)。
- 在任何組合中, 使用 SQL Server 到 PostgreSQL 轉(zhuǎn)換器/同步工具,以下數(shù)據(jù)庫(kù)之間的數(shù)據(jù)遷移是可能的:
- 微軟 SQL 服務(wù)器,
- Windows Azure SQL 數(shù)據(jù)庫(kù)/ Azure SQL 數(shù)據(jù)倉(cāng)庫(kù),
- 適用于 SQL Server 的 Google Cloud SQL,
- 用于 PostgreSQL 的 Google Cloud SQL,
- AWS RDS/極光,
- Heroku Postgres。
結(jié)論:
在本文中,我們介紹了將數(shù)據(jù)從 SQL Server 遷移到 PostgreSQL 的幾種方法。
Pgloader和Sqlserver2pgsql是 Linux 用戶和那些在終端中感覺(jué)舒適的優(yōu)秀解決方案。它在從許多數(shù)據(jù)庫(kù)遷移到 PostgreSQL 時(shí)發(fā)揮作用。但只能在一個(gè)方向上進(jìn)行轉(zhuǎn)換。
DBConvert 工具支持 SQL Server 和PostgreSQL 數(shù)據(jù)庫(kù)類型之間的雙向遷移和同步。支持更多本地和云數(shù)據(jù)庫(kù)轉(zhuǎn)換。DBSync 是在初始遷移后持續(xù)保持?jǐn)?shù)據(jù)庫(kù)同步的完美解決方案。