1

私は、BCP コマンド ラインで作成された XML 形式のファイルを使用した経験があり、それを 1 つのレコード形式のみのバルク ファイルに使用しました。

私の質問は、XML 内に条件ステートメントを挿入して、同じデータ ファイル内の異なるレコードを処理する方法があるかどうかです。

データ1 データ2 データ3

データ4 データ5 データ6 データ7 データ8

などなど...

XML のスキーマを調べたところ、これは一括アップロード形式のファイルが設計されたものではないという結論に達しました。

前もって感謝します!

4

1 に答える 1

2

私の知る限り、可変列セットをサポートする SQL Server インポート方法 (一括挿入、BCP、SSIS など) は提供されていません。絶対的に定義されたすべての列は、すべてのインポート行にある必要があります。

このため、この (非常に一般的な) 状況を処理するための推奨される方法は、次のいずれかです。

1)汎用言語 (VB、C# など) で記述された特殊なインポート プログラムを使用 (または記述) して、テキスト ファイルを解析し、S​​QL Server のテーブルに挿入します。または、

2) SQL Server が提供するインポート メソッド (一括挿入、BCP、SSIS など) のいずれかを使用して、各行を単一のテキスト列 (NVarchar(MAX) として) としてステージング テーブルにインポートし、SQL を使用してこれらのテキスト行を解析します。実際の列に。(これは私の好みの方法です)

上記 (2) の典型的なステージング テーブルは次のようになります。

CREATE TABLE Import_Staging
(
    RowNumber INT IDENTITY(1,1) NOT NULL PRIMARY KEY,
    RowText   NVARCHAR(MAX)
);

このルートを使用する場合、IDENTITY 列を非表示にすると、インポート ツールは通常より快適になります。これは、ファサード ビューを作成し、テーブルではなくビューにインポートを指示することで簡単に実行できます。そのようです:

CREATE VIEW vImport_Staging AS SELECT RowText FROM Import_Staging;
于 2012-12-14T16:46:04.350 に答える