Greenplum データベースのバージョン: PostgreSQL 8.2.15 (Greenplum データベース 4.2.3.0 ビルド 1)
SQL Server データベースのバージョン: Microsoft SQL Server 2008 R2 (SP1)
現在のアプローチ:
1) 各テーブルを SQL Server からフラット ファイルにエクスポートします。
2) PSQL コンソールの psql.exe ユーティリティを使用して、pgAdmin III でデータを Greenplum にロードします。
利点...
速度: わかりましたが、もっと速いものはありますか? 数百万行のデータを数分で読み込みます
自動化: わかりました。VB のシェル スクリプトを使用して、SSIS パッケージからこのユーティリティを呼び出します。
落とし穴...
信頼性: ETL は、フラット ファイルを保持するファイル サーバーに依存しています。
セキュリティ: ファイル サーバー上の機密データの可能性がある大量のデータ
エラー処理: 問題です。psql.exe は、エラーが発生し、データや部分的なファイルをロードしない場合でも、キャッチできるエラーを発生させません
他に試したことは...
.Net Providers\Odbc Data Provider: DataDirect 6.0 Greenplum Wire Protocol を使用してシステム DSN を構成しました。DELETE の優れたパフォーマンス。INSERT が非常に遅い犬。
参考までに、これは前述の SSIS の VB スクリプトです...
Public Sub Main()
Dim v_shell
Dim v_psql As String
v_psql = "C:\Program Files\pgAdmin III\1.10\psql.exe -d "MyGPDatabase" -h "MyGPHost" -p "5432" -U "MyServiceAccount" -f \\MyFileLocation\SSIS_load\sql_files\load_MyTable.sql"
v_shell = Shell(v_psql, AppWinStyle.NormalFocus, True)
End Sub
これは「load_MyTable.sql」ファイルの内容です...
\copy MyTable from '\\MyFileLocation\SSIS_load\txt_files\MyTable.txt' with delimiter as ';' csv header quote as '"'