2

私の要件:

入力ファイル:

1、abc、xyx

2,def,mno

3、ギ、suv

DB テーブル構造:

Col1 文字

col2 文字

col3 文字

col4 文字

col5 文字

BCP 後の表のデータ:

col1 col2 col3 col4 col5

1 abc xyz ab xy

2 def mno de mn

3 ギ suv gh su

基本的に、col4 と col5 は、col2 と col3 の値から計算された値です。

SQL Server BCP ユーティリティは、この種の操作をサポートしていますか? 任意のポインタをいただければ幸いです。

乾杯GT

4

5 に答える 5

3

フォーマットファイルを使用して、どのデータフィールドがどの列にマップされるかを指定できます

bcp でインポートする場合は、フォーマット ファイルを使用できます。

テーブルのフォーマット ファイルを作成します。

 bcp [table_name] format nul -f [format_file_name.fmt] -c -T 

これにより、次のようなファイルが作成されます。

 9.0
5
1       SQLCHAR       0       100     ","      1     Col1             SQL_Latin1_General_CP1_CI_AS
2       SQLCHAR       0       100     ","      2     Col2             SQL_Latin1_General_CP1_CI_AS
3       SQLCHAR       0       100     ","      3     Col3           SQL_Latin1_General_CP1_CI_AS
4       SQLCHAR       0       100     ","      3     Col4           SQL_Latin1_General_CP1_CI_AS
5       SQLCHAR       0       100     ","      3     Col5           SQL_Latin1_General_CP1_CI_AS

インポート ファイルを編集します。秘訣は、不要な列 (この例ではフィールド 4 と 5) を削除し、列数も更新することです。これは、フォーマット ファイルの 2 行目です。この例では、5 を 3 に変更します。次に、入力ファイル、このフォーマット ファイル、およびセパレータを指定して、このフォーマット ファイルを使用してデータをインポートします。

bcp [table_name] in [data_file_name] -t , -f [format_file_name.fmt] -T 
于 2009-05-29T08:19:50.500 に答える
2

BCPをステージングテーブルに挿入してから、適切な構造のステージングテーブルから別のテーブルに挿入することができます。

また、外部BCPコマンドと同じフォーマットファイルとソースファイルでSQL内からを使用BULK INSERTして、SQLでバッチ全体を実行できるようにすることもできます。つまり、BULK INSERT入力に一致するテーブル、次にINSERT INTO最終テーブルになります。

Perl(または他のコマンドラインツール)のような別の前処理オプションは、BCPを使用する前にデータを少しパイプするPowerShellです(XMLオプションを使用する可能性があります):http ://www.sqlservercentral.com/articles/powershell/ 65196 /

私が好むオプションはおそらくSSISです。これには、派生列を含む、利用可能な変換のすべての武器があります。

于 2008-12-17T03:02:17.713 に答える
1

いいえ、BCP でこれを行うことはできませんが、BCP を使用してクエリからデータ セットを抽出し、ファイルにダンプすることはできます。

ソースからのクエリを使用せずにこれを行う場合は、ファイルに bcp アウトし、perl スクリプトなどを使用してファイルを後処理して計算列を生成し、ファイルを宛先に再インポートする必要があります。適切な形式の BCP 制御ファイルを使用します。

編集: BCP はかなり単純化されています。クライアント側のツールを使用できない場合は、ステージング テーブルに挿入してから、ストアド プロシージャで派生値を計算できます。

于 2008-12-16T22:11:48.627 に答える
0

SQL ServerIntegrationServicesと変換が私の選択のアプローチです。必要な変換を構築するための非常にシンプルなパッケージです。SSISは非常に高速で、スケジュールも簡単です。

于 2008-12-17T03:18:18.790 に答える
-1

プログラミングが少しでも苦手でなければ、ADO.NET でこれを行うことができます。これと、その場で行いたいその他の変換は、カスタム IDataReader を実装することで非常に簡単に行うことができます。SqlBulkCopy は IDataReader を受け取り、それが提供するデータを一括挿入します。その後、リーダーは入力ファイルを使用して、追加の列を提供したり、データを変換したり、キー値を検索したりできます。

于 2014-07-03T08:43:23.163 に答える