0

達成するためのベストプラクティスは何か疑問に思っています。

SQL Serverで実行されるストアドプロシージャがあり、Netezzaに格納するために巨大なファクトテーブルを使用していくつかの計算を行う必要があります。

流れ:

  1. ストアドプロシージャは、SQLServer上に一時テーブルを作成します
  2. これらはNetezzaに送信され、ファクトテーブルに結合されます
  3. 計算はNetezzaで行われます
  4. 結果はSQLServerに返されます

SQL ServerからNetezzaに一時テーブルを渡す方法は何ですか?

ありがとう

4

1 に答える 1

1

私が知っている唯一の方法は、フラット ファイルを使用するか、ODBC ドライバーを使用して Netezza を直接操作し、レコードセットをメモリに保持し、odbc 接続を介して Netezza に書き込むことです。

Windows と Unix のどちらを使用しているかに関係なく、Netezza には、Netezza への接続に使用できるクライアント ツールが付属しています。参考までに、インターネットでそれらを探す必要はありません。それらは、Netezza から直接取得するか、その関係を管理する人から取得する必要があります。

SSIS で ODBC ドライブを使用して作業を行う方法を検討することをお勧めします。私は SSIS のプロではないので、その方法を知っているとは言えませんが、最初に調べてみます。

タスクを達成する必要がある場合は、次のタスクを実行するために C# で何かを記述します。

  • SQL サーバーからフラット ファイルを作成する
  • Netezza に接続する フラット ファイルにリンクする外部テーブルを作成します。
  • Netezza でプロシージャを呼び出して作業を行い、エクスポート用のデータを一時テーブルに生成します。
  • 新しいデータをフラット ファイルにエクスポートし、それを SQL Server にインポートします。

考えてみると、次のことも試すことができますが、テストされていません。同じフラットファイルを使用して、SQL Server にリンク テーブルを作成し、Netezza に外部テーブルを作成できないでしょうか。可能であれば、ファイル ロックを解除して、SQL サーバーから netezza への準リンクを作成できます。

netezza の外部テーブルの詳細については、こちらをご覧ください。ドキュメント Netezza ユーザー ガイドの第 5 章を参照してください。

Netezza ユーザー ガイド

また、コーディング側に興味がある場合は、c# 経由で netezza に接続する方法についての非常に優れたリンクが以下にあります。

スタックポスト

その投稿の一部を使用して、以下のメソッドを構築し、Netezza に対してコマンドを実行することになりました。

OdbcDataReader GetReaderForCommand(string strCmd, string dbname)
{

    var conn = new OdbcConnection();
    conn.ConnectionString = "Driver={NetezzaSQL};servername=<servername>;port=5480;database="+dbname+"; username=<username>;password=<pwd>;";

    OdbcDataReader rdr = null;


        conn.Open();
        System.Data.Odbc.OdbcCommand cmd = new System.Data.Odbc.OdbcCommand(strCmd, conn);
        rdr = cmd.ExecuteReader();
        return rdr;


}

最後に、フォローアップするリンクをいくつか示します。

enzeecommunity.com - 検索して質問するためのユーザー ベース。

Netezza で使用する無料の管理スタジオ。

http://www.aginity.com/ProductivityTools/WorkbenchOverview.aspx -

于 2012-11-11T13:45:55.007 に答える