Sql-Server

什麼是在 SQL Server 和 PostgreSQL 之間可靠傳輸數據的好解決方案?

  • June 30, 2014

在分析我們的一些業務數據時,我們意識到我們需要跨不同的數據源連接數據。例如,我們的應用程序數據儲存在 Postgres 中(通過 MoSQL 從 MongoDB 移植),而我們的購買資訊(訂閱、財務資訊等)儲存在 SQL Server 中。

我已經使用 Python 編寫了一個基本的命令行工具來證明我可以將數據從 Postgres 移動到 Postgres 以及從 SQL Server 移動到 Postgres,之後我將使用普通 SQL 操作數據。這看起來可以工作,但我很快意識到我可能會在此過程中遇到很多數據轉換問題(例如None需要\N),並且可能有一個工具可以做到這一點。

我很難搜尋可以從命令行執行的工具。CloverETL 出現在幾個搜尋中,但這對於我需要的東西來說似乎相當複雜(誰知道——也許我需要一些複雜的東西)。相反,我正在尋找可以為一個數據源提供 SQL 並讓該工具補償差異並將該數據插入到不同數據源中的東西。我想在 Mac 上開發並在 *nix 上部署。

有沒有好的、輕量級的、可編寫腳本的 ETL 工具可以幫助這個過程?

Pentaho 有一個名為 Kettle 的開源工具,我們用它來使用 Postgres 進行 ETL 開發。它非常好,非常全面。

http://community.pentaho.com/projects/data-integration/

首先:你為什麼要將數據從 SQL Server 移動到 Postgres 以便使用 SQL 來操作它?您是否意識到 Postgres 沒有 SQL Server 的並行查詢執行器?這意味著即使在小型伺服器上,數據倉庫數據操作查詢在 SQL Server 上的執行速度也將比在 Postgres 上快幾倍。您沒有找到執行 Postgres 的任何體面的 TPC-H 基準測試是有充分理由的。反過來,使用 SQL Server 作為數據操縱器會更有意義。如果您決定從 Postgres 遷移到 SQL,則通過 ODBC Postgres 驅動程序使用 SQL Server 連結伺服器將允許您直接在 SQL Server 中編寫查詢以訪問 Postgres 中的表並在兩個數據庫之間移動數據以在需要時獲得協同定位.

如果您有一些硬性要求(除了不喜歡 SQL Server)將數據從 SQL Server 移動到 Postgres 並且您擔心速度,那麼最簡單的方法可能是使用 SQL Server 的 BCP 實用程序(您可以從*Nix 命令行)將數據轉儲到 CSV 文件並使用 Postgres COPY 導入結果。然後,每個數據庫將使用其本機功能處理數據類型之間的轉換,您無需過多擔心實現細節。如果您通常堅持使用符合 ANSI 的數據類型(SQL Server 和 Postgres 都支持),那麼您應該可以通過這樣的 CSV 文件來移動內容。

您可以使用 SMB 共享作為轉儲數據的地方,假設您可以找到一個體面的 Samba 實現,它可以足夠快地執行 SMB 以跟上 SQL Server 可以轉儲的速度(SQL Server 將輕鬆轉儲在 GB 範圍內) /sec 設置正確時到 SMB 共享)。或者,您可以使用 iSCSI 目標作為轉儲 CSV 文件的位置。

引用自:https://dba.stackexchange.com/questions/68424