dwloader Command-Line Loader for Parallel Data Warehouse

dwloader は 、テーブルData Warehouseを既存のテーブルに一括で読み込む Parallel Data Warehouse (PDW) コマンド ライン ツールです。 行を読み込むときに、すべての行をテーブルの末尾に追加したり ( 追加モードまたは fastappend モード)、新しい行を追加して既存の行を更新したり (アップサート モード)、読み込む前に既存のすべての行を削除してから、すべての行を空のテーブルに挿入 (再読み込みモード) することができます。

データの読み込みプロセス

  1. ソース データを準備します。

    独自の ETL プロセスを使用して、読み込むソース データを作成します。 ソース データは、変換先テーブルのスキーマと一致する形式である必要があります。 ソース データを 1 つ以上のテキスト ファイルに格納し、読み込みサーバー上の同じディレクトリにテキスト ファイルをコピーします。 読み込みサーバーの詳細については、「読み込みサーバー の取得と構成」を参照してください。

  2. 読み込みオプションを準備します。

    使用する読み込みオプションを決定します。 構成ファイルに読み込みオプションを格納します。 構成ファイルを読み込みサーバー上のローカルの場所にコピーします。 dwloader 構成オプションについては、このトピックで説明します。

  3. 読み込みエラー オプションを準備します。

    dwloader で 読み込め ない行を処理する方法を決定します。 読み込みを実行するために、 dwloader は最初にデータをステージング テーブルに読み込み、次にデータを転送先テーブルに転送します。 ローダーは、ステージング テーブルにデータを読み込むと、読み込みに失敗した行の数を追跡します。 たとえば、正しく書式設定されていない行は読み込めなくなります。 失敗した行は拒否ファイルにコピーされます。 既定では、別の拒否しきい値を指定しない限り、最初の拒否後に負荷が中止されます。

  4. dwloader をインストールします

    dwloader を読み込みサーバーにインストールします (まだインストールされていない場合)。

  1. dwloader を実行します

    読み込みサーバーにサインインし、適切なコマンド dwloader.exe を使用して実行可能ファイルを実行します。

  2. 結果を確認しましょう。

    失敗した行ファイル (-R で指定) を確認して、読み込みに失敗した行を確認できます。 このファイルが空の場合は、すべての行が正常に読み込まれます。 dwloader は トランザクションなので、ステップが失敗した場合 (拒否された行以外)、すべてのステップが初期状態にロールバックされます。

構文

dwloader.exe { -h }  
  
dwloader.exe   
    {  
        { -U login_name  -P password  }  
        | -W  
    }  
    [ -f parameter_file ]  
    [ -S target_appliance ]  
    { -T target_database_name . [ schema ] . table_name }   
    { -i source_data_location } [ <source_data_options> ]  
    { -R load_failure_file_name } [ <load_failure_options> ]  
    [ <loading_options> ]  
}  
  
<source_data_options> ::=  
{  
    [ -fh number_header_rows ]  
    [ < variable_length_column_options > | < fixed_width_column_options > ]  
    [ -D { mdy | myd | ymd | ydm | dmy | dym | custom_date_format } ]  
    [ -dt datetime_format_file ]  
}  
  
<variable_length_column_options> ::=  
{  
    [ -e character_encoding ]  
    -r row_delimiter   
    [ -s string_delimiter ]  
    -t field_delimiter   
}  
  
<fixed_width_column_options> ::=  
{  
    -w fixed_width_config_file   
    [ -e character_encoding ]   
    -r row_delimiter   
}  
  
<load_failure_options> ::=  
{  
    [ -rt { value | percentage } ]  
    [ -rv reject_value ]  
    [ -rs reject_sample_value ]  
}  
  
<loading_options> ::=  
{  
    [ -d staging_database_name ]  
    [ -M { append | fastappend | upsert -K merge_column [ ,...n ] | reload } ]  
    [ -b batchsize ]   
    [ -c ]  
    [ -E ]  
    [ -m ]  
    [ -N ]  
    [ -se ]
    [ -l ]   
}  

引数

-h
ローダーの使用に関する簡単なヘルプ情報を表示します。 ヘルプは、他のコマンド ライン パラメーターが指定されていない場合にのみ表示されます。

-Ulogin_name
読み込SQL Server適切なアクセス許可を持つ有効な認証ログイン。

-Ppassword
SQL Server 認証login_name

-W
認証Windows使用します。 (パスワードlogin_name必要ありません)。

-fparameter_file_name
コマンド ライン パラメーターの代 parameter_file_nameパラメーター ファイルを使用します。 parameter_file_name とパスワード以外のコマンド ライン パラメーター user_nameめできます。 パラメーターがコマンド ラインとパラメーター ファイルで指定されている場合、コマンド ラインは file パラメーターをオーバーライドします。

パラメーター ファイルには、プレフィックスを含めずに 1 行につき - 1 つのパラメーターが含まれている。

例 :

rt=percentage

rv=25

-Starget_appliance
読み込SQL Server PDW受信するアプライアンスを指定します。

Infiniband 接続の場合、target_appliance appliance-name-SQLCTL01 として指定されます。 この名前付き接続を構成するには、「 InfiniBand ネットワーク アダプターの構成」を参照してください

イーサネット接続 の場合target_appliance は、コントロール ノード クラスターの IP アドレスです。

省略した場合、dwloader は、dwloader のインストール時に指定された値に既定で設定されます。

-Ttarget_database_name。[スキーマ]。Table_name
変換先テーブルの 3 部構成の名前。

-Isource_data_location
読み込む 1 つ以上のソース ファイルの場所。 各ソース ファイルは、テキスト ファイルまたは gzip で圧縮されたテキスト ファイルである必要があります。 各 gzip ファイルに圧縮できるソース ファイルは 1 つのみです。

ソース ファイルの書式を設定するには:

  • ソース ファイルは、読み込みオプションに従って書式設定する必要があります。

  • ソース ファイル内の各行には、1 つのテーブル行のデータが含まれている。 ソース データは、コピー先テーブルのスキーマと一致する必要があります。 列の順序とデータ型も一致する必要があります。 行の各フィールドは、コピー先テーブルの列を表します。

  • 既定では、フィールドは可変長であり、区切り記号で区切られます。 区切り記号の種類を指定するには、コマンド <variable_length_column_options> オプションを使用します。 固定長フィールドを指定するには、コマンド ライン fixed_width_column_options<>を使用します。

ソース データの場所を指定するには:

  • ソース データの場所には、ネットワーク パスまたは読み込みサーバー上のディレクトリへのローカル パスを指定できます。

  • ディレクトリ内のすべてのファイルを指定するには、ディレクトリ パスの後に * ワイルドカード文字を入力します。 ローダーは、ソース データの場所にあるサブディレクトリからファイルを読み込むのではありません。 ディレクトリが gzip ファイルに存在すると、ローダー エラーが発生します。

  • ディレクトリ内のファイルの一部を指定するには、文字と * ワイルドカードの組み合わせを使用します。

1 つのコマンドで複数のファイルを読み込むには:

  • すべてのファイルが同じディレクトリに存在する必要があります。

  • ファイルは、すべてのテキスト ファイル、すべての gzip ファイル、または text ファイルと gzip ファイルの両方の組み合わせである必要があります。

  • どのファイルにもヘッダー情報を含めることもできます。

  • すべてのファイルで、同じ文字エンコードの種類を使用する必要があります。 -e オプションを参照してください。

  • すべてのファイルを同じテーブルに読み込む必要があります。

  • すべてのファイルが連結され、1 つのファイルのように読み込まれ、拒否された行は 1 つの拒否ファイルに移動します。

例 :

  • -i \\loadserver\loads\daily\*.gz

  • -i \\loadserver\loads\daily\*.txt

  • -i \\loadserver\loads\daily\monday.*

  • -i \\loadserver\loads\daily\monday.txt

  • -i \\loadserver\loads\daily\*

-Rload_failure_file_name
読み込みエラーが発生した場合、 dwloader は読み込めない行を格納し、エラーの説明にはエラー情報を load_failure_file_name という名前の ファイルに格納します。 このファイルが既に存在する場合、dwloader は既存のファイルを上書きします。 load_failure_file_name エラーが発生すると作成されます。 すべての行が正常に読み込 load_failure_file_nameは作成 されません。

-fh number_header_rows
行の先頭で無視する行 (行source_data_file_name。 既定値は 0 です。

<variable_length_column_options>
文字区切り source_data_file_name 列を持つオブジェクトのオプション。 既定では、 source_data_file_name には ASCII 文字が含まれています。

ASCII ファイルの場合、NUL は区切り記号を連続して配置することで表されます。 たとえば、パイプで区切られたファイル ("|") では、NULL は "||" で示||。 コンマ区切りファイルでは、NULL は ",," で示されます。 さらに、 -E (--emptyStringAsNull) オプションを指定する必要があります。 -E の詳細については、以下を参照してください。

-echaracter_encoding
データ ファイルから読み込むデータの文字エンコードの種類を指定します。 オプションは ASCII (既定値)、UTF8、UTF16、または UTF16BE です。UTF16 はリトル エンディアン、UTF16BE はビッグ エンディアンです。 これらのオプションでは、大文字と小文字は区別されません。

-tfield_delimiter
行内の各フィールド (列) の区切り記号。 フィールド区切り記号は、これらの ASCII エスケープ文字または ASCII 16 進値の 1 つ以上です。

名前 Escape Character 16 進文字
タブ \t 0x09
復帰 (CR) \r 0x0d
ライン フィード (LF) \n 0x0a
CRLF \r\n 0x0d0x0a
コンマ ',' 0x2c
二重引用符 \" 0x22
単一引用符 \' 0x27

コマンド ラインでパイプ文字を指定するには、二重引用符 "|" で囲|。 これにより、コマンド ライン パーサーによる誤った解釈が回避されます。 その他の文字は、単一引用符で囲まれています。

例 :

-t "|"

-t ' '

-t 0x0a

-t \t

-t '~|~'

-rrow_delimiter
ソース データ ファイルの各行の区切り記号。 行区切り記号は、1 つ以上の ASCII 値です。

キャリッジ リターン (CR)、改行 (LF)、またはタブ文字を区切り記号として指定するには、エスケープ文字 (\r、\n、\t) またはそれらの 16 進値 (0x、0d、09) を使用できます。 その他の特殊文字を区切り記号として指定するには、その 16 進値を使用します。

CR+LF の例:

-r \r\n

-r 0x0d0x0a

CR の例:

-r \r

-r 0x0d

LF の例:

-r \n

-r 0x0a

Unix では LF が必要です。 データを作成するには CR がWindows。

-sstring_delimiter
テキスト区切り入力ファイルの文字列データ型フィールドの区切り記号。 文字列区切り記号は、1 つ以上の ASCII 値です。 文字 (-s *など) または 16 進値 (二重引用符の場合は -s 0x22 など) として指定できます。

例:

-s *

-s 0x22

< fixed_width_column_options>
固定長列を持つソース データ ファイルのオプション。 既定では、 source_data_file_name には ASCII 文字が含まれています。

固定幅列は、-e が UTF8 の場合はサポートされません。

-wfixed_width_config_file
各列の文字数を指定する構成ファイルのパスと名前。 すべてのフィールドを指定する必要があります。

このファイルは、読み込みサーバーに存在する必要があります。 パスには、UNC、相対パス、または絶対パスを指定できます。 列の各 行fixed_width_config_file 1 つの列の名前と、その列の文字数が含まれています。 次のように、列ごとに 1 行あるので、ファイル内の順序は変換先テーブルの順序と一致する必要があります。

Column_namenum_chars

Column_namenum_chars

固定幅構成ファイルの例:

SalesCode=3

SalesID=10

の例の行source_data_file_name。

230Shirts0056

320Towels1356

前の例では、最初に読み込まれた行に SalesCode='230' と SalesID='Shirts0056' があります。 2 番目に読み込まれた行には、SalesCode='320' と SaleID='Saless1356' があります。

固定幅モードで先頭と末尾のスペースまたはデータ型の変換を処理する方法については、「 dwloader のデータ型変換規則」を参照してください。

-echaracter_encoding
データ ファイルから読み込むデータの文字エンコードの種類を指定します。 オプションは ASCII (既定値)、UTF8、UTF16、または UTF16BE です。UTF16 はリトル エンディアン、UTF16BE はビッグ エンディアンです。 これらのオプションでは、大文字と小文字は区別されません。

固定幅列は、-e が UTF8 の場合はサポートされません。

-rrow_delimiter
ソース データ ファイルの各行の区切り記号。 行区切り記号は、1 つ以上の ASCII 値です。

キャリッジ リターン (CR)、改行 (LF)、またはタブ文字を区切り記号として指定するには、エスケープ文字 (\r、\n、\t) またはそれらの 16 進値 (0x、0d、09) を使用できます。 その他の特殊文字を区切り記号として指定するには、その 16 進値を使用します。

CR+LF の例:

-r \r\n

-r 0x0d0x0a

CR の例:

-r \r

-r 0x0d

LF の例:

-r \n

-r 0x0a

Unix には LF が必要です。 Windows には CR が必要です。

-D { ymd | ydm | mdy | myd | dmy | dym | custom_date_format }
入力ファイル内のすべての datetime フィールドの月 (m)、日 (d)、および年 (y) の順序を指定します。 既定の順序は ymd です。 同じソースファイルに対して複数の注文形式を指定するには、-dt オプションを使用します。

ymd |dmy
ydm と dmy では、同じ入力形式を使用できます。 どちらも、年を日付の先頭または末尾にすることができます。 たとえば、 ydmdmy の両方の日付形式の場合、入力ファイルに2013-02-03 または02-03-2013 を含めることができます。

ydm
データ型が datetime および smalldatetime の列には、ydm として書式設定された入力のみを読み込むことができます。 Datetime2、date、または datetimeoffset データ型の列に ydm 値を読み込むことはできません。

mdy
mdy では、月 ><>< の1日 >< 分のコンマ >< の年 > を使用でき < ます。

1975年1月1日の mdy 入力データの例を次に示します。

  • 1975年1月1日

  • 75年1月01日

  • Jan/1/75

  • 01011975

myd
2010年3月4日の入力ファイルの例 (2010: 03-2010-04、3/2010/4)

dym
2010年3月4日の入力ファイルの例: 04-2010-03、4/2010/3

custom_date_format
custom_date_format はカスタム日付形式 (例: MM/dd/yyyy) であり、旧バージョンとの互換性のためだけに含まれています。 dwloader では、カスタムの日付形式が適用されません。 代わりに、カスタム日付形式を指定すると、 dwloader は、ymd、ydm、mdy、myd、dym、または dmy の対応する設定に変換します。

たとえば、-D MM/dd/yyyy を指定した場合、dwloader では、すべての日付入力が month first、day、year (mdy) で並べ替えられることを想定しています。 カスタム日付形式で指定されているように、2文字の月、2桁の日、および4桁の年は適用されません。 ここでは、日付形式が-D MM/dd/yyyy: 01/02/2013、02.2013、1/2/2013 の場合に、入力ファイルで日付を書式設定する方法の例をいくつか示します。

より包括的な書式設定情報については、「 dwloader のデータ型変換規則」を参照してください。

-dtdatetime_format_file
各 datetime 形式は、 datetime_format_fileという名前のファイルで指定されます。 コマンドラインパラメーターとは異なり、スペースを含むファイルパラメーターを二重引用符で囲むことはできません。 データの読み込み時に datetime 形式を変更することはできません。 コピー先のテーブルのソースデータファイルとそれに対応する列の形式は同じである必要があります。

各行には、変換先テーブルの列の名前とその datetime 形式が含まれています。

例:

LastReceiptDate=ymd

ModifiedDate=dym

-dstaging_database_name
ステージングテーブルを格納するデータベース名。 既定値は、-T オプションで指定されたデータベースです。これは、変換先テーブルのデータベースです。 ステージングデータベースの使用方法の詳細については、「 ステージングデータベースの作成」を参照してください。

-Mload_mode_option
データを追加、upsert、または再読み込みするかどうかを指定します。 既定のモードは append です。

append
ローダーは、変換先テーブルの既存の行の末尾に行を挿入します。

fastappend
ローダーは、一時テーブルを使用せずに、コピー先テーブルの既存の行の末尾に行を直接挿入します。 fastappend には、マルチトランザクション (-m) オプションが必要です。 Fastappend を使用する場合、ステージングデータベースを指定することはできません。 Fastappend のロールバックはありません。これは、失敗または中止された負荷からの復旧を、独自の読み込みプロセスで処理する必要があることを意味します。

upsertmerge_column [,...n ]
ローダーは、SQL Server Merge ステートメントを使用して、既存の行を更新し、新しい行を挿入します。

-K オプションは、マージの基準となる列を指定します。 これらの列は、一意の行を表すマージキーを形成します。 マージキーが変換先テーブルに存在する場合は、行が更新されます。 マージキーが変換先テーブルに存在しない場合は、行が追加されます。

ハッシュ分散テーブルの場合、merge キーはディストリビューション列にする必要があります。

レプリケートされたテーブルの場合、merge キーは1つ以上の列の組み合わせです。 これらの列は、アプリケーションのニーズに応じて指定されます。

複数の列は、スペースを使用しないでコンマで区切る必要があります。または、コンマ区切りでスペースで区切り、単一引用符で囲む必要があります。

ソーステーブルの2つの行が一致するマージキーの値を持つ場合、それぞれの行が同一である必要があります。

直し
ローダーは、ソースデータを挿入する前に、変換先テーブルを切り捨てます。

-bbatchsize
Microsoft サポートで使用する場合にのみ推奨されます。 batchsizeは、DMS が計算ノードの SQL Server インスタンスに対して実行する一括コピーの SQL Server バッチサイズです。 batchsizeを指定すると、SQL Server PDW によって、各負荷に対して動的に計算されるバッチ読み込みサイズが上書きされます。

SQL Server 2012 PDW 以降では、コントロールノードは、既定で各負荷のバッチサイズを動的に計算します。 この自動計算は、メモリサイズ、ターゲットテーブル型、ターゲットテーブルスキーマ、読み込みの種類、ファイルサイズ、ユーザーのリソースクラスなど、いくつかのパラメーターに基づいています。

たとえば、読み込みモードが fastappend で、テーブルにクラスター化列ストアインデックスがある場合、SQL Server PDW は既定でバッチサイズ1048576を使用しようとします。これにより、行グループが閉じられ、デルタストアを経由せずに列ストアに直接読み込まれるようになります。 メモリでバッチサイズ1048576が許可されていない場合、dwloader は小さい batchsize を選択します。

読み込みの種類が FASTAPPEND の場合、 batchsize はテーブルへのデータの読み込みに適用されます。それ以外の場合は、データをステージングテーブルに読み込む場合に batchsize が適用されます。

<reject_options>
ローダーが許可する読み込みエラーの数を決定するためのオプションを指定します。 読み込みエラーがしきい値を超えると、ローダーは停止し、行はコミットされません。

-rt { value | パーセント}
-Rvreject_valueオプションの-reject_valueがリテラルの行数 (値) であるか、または失敗率 (%) であるかを指定します。 既定値は value です。

割合オプションは、-rs オプションに従って間隔で実行されるリアルタイムの計算です。

たとえば、ローダーが100行の読み込みを試行し、25回失敗し、75が成功した場合、エラー率は25% になります。

-rvreject_value
読み込みを停止するまでに許可する行の拒否の数または割合を指定します。 -Rtオプションは、 reject_valueが行の数または行の割合を参照するかどうかを決定します。

既定の reject_value は0です。

-Rt 値と共に使用すると、ローダーは、拒否された行数が reject_value を超えたときに負荷を停止します。

-Rt パーセントを使用する場合、ローダーは間隔 (-rs オプション) で割合を計算します。 したがって、失敗した行の割合は reject_valueを超える可能性があります。

-rsreject_sample_size
オプションと共 -rt percentage に使用して、増分パーセンテージチェックを指定します。 たとえば、reject_sample_size が1000の場合、ローダーは1000行の読み込みを試行した後に失敗した行の割合を計算します。 追加の1000行の読み込みを試行した後、失敗した行の割合を再計算します。

-c
char、nchar、varchar、および nvarchar フィールドの左側と右側から空白文字を削除します。 空白文字のみを含む各フィールドを空の文字列に変換します。

例 :

' ' は '' に切り捨てられる

' abc ' は 'abc' に切り捨てられる

-c を -E と一緒に使用すると、-E 操作が最初に行われます。 空白文字のみを含むフィールドは、NULL ではなく空の文字列に変換されます。

-E
空の文字列を NULL に変換します。 既定では、これらの変換は実行されません。

-m
読み込みの 2 番目のフェーズにマルチトランザクション モードを使用します。ステージング テーブルから分散テーブルにデータを読み込む場合は 。

-m を使用すると、SQL Server PDW読み込みとコミットが並列で実行されます。 これは、既定の読み込みモードよりもはるかに高速に実行されますが、トランザクション セーフではありません。

-m を指定しない場合、SQL Server PDWコンピューティング ノード内のディストリビューション全体で、およびコンピューティング ノード間で同時に読み込みとコミットが実行されます。 この方法は複数トランザクション モードよりも低速ですが、トランザクション セーフです。

-m は 、追加、 再読み込み、アップサー では 省略可能です

fastappend には -m が必要です。

-m はレプリケート テーブルと一緒に使用できません。

-m は 、2 番目の読み込みフェーズにのみ適用されます。 最初の読み込みフェーズには適用されません。ステージング テーブルにデータを読み込む。

複数トランザクション モードでのロールバックはありません。つまり、失敗または中止された読み込みからの復旧は、独自の読み込みプロセスで処理する必要があります。

データを失 わずに復旧 できるよう、空のテーブルに読み込む場合にのみ -m を使用することをお勧めします。 読み込みエラーから復旧するには、コピー先テーブルを削除し、読み込み問題を解決し、コピー先テーブルを作成し直して、読み込みを再度実行します。

-N
ターゲット アプライアンスに、信頼された機関SQL Server PDW有効な証明書が存在する必要があります。 これを使用して、攻撃者によってデータがハイジャックされ、承認されていない場所に送信されていないことを確認します。 証明書はアプライアンスに既にインストールされている必要があります。 証明書をインストールする唯一のサポートされている方法は、アプライアンス管理者が証明書ツールを使用して構成マネージャーです。 アプライアンスに信頼された証明書がインストールされているかどうかを確認できない場合は、アプライアンス管理者に問い合わせてください。

-se
空のファイルの読み込みをスキップします。 これにより、空の gzip ファイルの圧縮解除もスキップされます。

-l
CU7.4 更新プログラムで使用できます。読み込み可能な最大行長 (バイト単位) を指定します。 有効な値は、32768 ~ 33554432。 大きな行 (32 KB を超える) を読み込む必要がある場合にのみ使用します。これにより、クライアントとサーバーに割り当てるメモリが多くなられるので、

リターン コードの値

0 (成功) または他の整数値 (失敗)

コマンド ウィンドウまたはバッチ ファイルで、 を使用して errorlevel リターン コードを表示します。 次に例を示します。

dwloader  
echo ReturnCode=%errorlevel%  
if not %errorlevel%==0 echo Fail  
if %errorlevel%==0 echo Success  

PowerShell を使用する場合は、 を使用します $LastExitCode

アクセス許可

宛先テーブルに対する LOAD 権限と適用可能なアクセス許可 (INSERT、UPDATE、DELETE) が必要です。 ステージング データベースに対する CREATE 権限 (一時テーブルを作成する場合) が必要です。 ステージング データベースを使用しない場合は、転送先データベースに対する CREATE 権限が必要です。

全般的な解説

dwloader を使用して読み込む場合のデータ型変換の詳細については、「 dwloader のデータ型変換規則」を参照してください

パラメーターに 1 つ以上のスペースが含まれている場合は、パラメーターを二重引用符で囲む必要があります。

インストールされている場所からローダーを実行する必要があります。 dwloader 実行可能ファイルはアプライアンスと一緒にプレインストールされ、C:\Program Files\Microsoft SQL Server Data Warehouse\DWLoader ディレクトリにあります。

コマンド ライン パラメーターとして指定することで、パラメーター ファイル (-f オプション) で指定されたパラメーターをオーバーライドできます。

ローダーの複数のインスタンスを同時に実行できます。 ローダー インスタンスの最大数は事前構成済みであり、変更できません。

読み込まれたデータは、ソースの場所よりもアプライアンスの領域が多い、または少ない場合があります。 データのサブセットを使用してテスト インポートを実行して、ディスクの消費量を見積もりすることができます。

dwloader はトランザクション プロセスであり、障害が発生した場合は正常にロールバックしますが、一括読み込みが正常に完了した後はロールバックできません。 アクティブな dwloader プロセスを取り消す 場合は、Ctrl + C キーを押します。

制限事項と制約事項

同時に発生する負荷の合計サイズは、データベースの LOG_SIZE より小さくする必要があります。また、すべての同時読み込みの合計サイズが LOG_SIZE の 50% 未満にすることをお勧めします。 このサイズ制限を実現するために、大きな負荷を複数のバッチに分割できます。 データベースの詳細については、「CREATE DATABASE LOG_SIZE」 を参照してください。

1 つの読み込みコマンドで複数のファイルを読み込む場合、拒否された行はすべて同じ拒否ファイルに書き込まれます。 拒否ファイルには、拒否された各行が含まれる入力ファイルは表示されません。

空の文字列を区切り記号として使用することはできません。 空の文字列を行区切り記号として使用すると、読み込みは失敗します。 列区切り記号として使用すると、読み込みでは区切り記号が無視され、列区切り記号として既定の "|" が引き続き使用されます。 文字列区切り記号として使用すると、空の文字列は無視され、既定の動作が適用されます。

ロック動作

dwloader のロック動作は、データ の種類によって load_mode_option

  • append - Append が推奨される最も一般的なオプションです。 [追加] を選択すると、ステージング テーブルにデータが読み込まれます。 ロックの詳細については、以下で説明します。

  • 高速追加 - 高速追加は、ExclusiveUpdate テーブル ロックを受け取る最後のテーブルに直接読み込まれます。これは、ステージング テーブルを使用しない唯一のモードです。

  • reload - データをステージング テーブルに読み込み、ステージング テーブルと最後のテーブルの両方で排他ロックを必要とします。 同時実行操作では、再読み込みは推奨されません。

  • upsert - Upsert はステージング テーブルにデータを読み込み、ステージング テーブルから最終的なテーブルへのマージ操作を実行します。 アップサートでは、最終的なテーブルに対する排他ロックは必要ではありません。 アップサートを使用すると、パフォーマンスが異なる場合があります。 環境内の動作をテストします。

ロック動作

追加モードのロック

Append は(-m 引数を使用して) マルチトランザクション モードで実行できますが、トランザクション セーフではありません。 そのため、append はトランザクション操作として使用する必要があります (-m 引数は使用されません)。 残念ながら、最後の INSERT-SELECT 操作中、トランザクション モードは現在、マルチトランザクション モードの約 6 倍遅くなります。

追加モードでは、2 つのフェーズでデータが読み込まれます。 フェーズ 1 では、ソース ファイルからステージング テーブルにデータが同時に読み込まれます (断片化が発生する可能性があります)。 フェーズ 2 では、ステージング テーブルから最終的なテーブルにデータが読み込まれます。 2 番目のフェーズでは 、INSERT INTO...SELECT WITH (TABLOCK) 操作。 次の表は、最後のテーブルのロック動作と、追加モードを使用する場合のログ動作を示しています。

テーブルの種類 複数トランザクション
モード (-m)
テーブルが空です コンカレンシーのサポート ログ記録
ヒープ はい はい はい Minimal
ヒープ はい いいえ はい Minimal
ヒープ いいえ はい いいえ Minimal
ヒープ いいえ いいえ いいえ Minimal
Cl はい はい いいえ Minimal
Cl はい いいえ はい [完全]
Cl いいえ はい いいえ Minimal
Cl いいえ いいえ はい [完全]

上の表は、ヒープまたはクラスター化インデックス (CI) テーブルへの追加モードの読み込みを使用する dwloader を示しています。マルチトランザクション フラグを使用する場合と使用しない場合は、空のテーブルまたは空でないテーブルに読み込む方法を示します。 このような負荷の組み合わせごとに、ロックとログの動作が表に表示されます。 たとえば、追加モードを使用した (2 つ目の) フェーズをマルチトランザクション モードを使用せずにクラスター化インデックスに読み込み、空のテーブルに読み込む場合、PDW によってテーブルに排他ロックが作成され、ログ記録は最小限になります。 つまり、顧客は (2 つ目の) フェーズを読み込み、空のテーブルに同時にクエリを実行することはできません。 ただし、同じ構成を使用して空でないテーブルに読み込む場合、PDW はテーブルに排他ロックを発行し、コンカレンシーは可能です。 残念ながら、完全なログ記録が発生し、プロセスが遅くなります。

A. 単純な dwloader の例

次の例は、必要なオプションのみを 選択したローダー の開始を示しています。 その他のオプションは、 のグローバル構成 ファイルからloadparamfile.txt

認証を使用SQL Server例。

--Load over Ethernet  
dwloader.exe -S 10.192.63.148 -U mylogin -P 123jkl -f /configfiles/loadparamfile.txt  
  
--Load over InfiniBand to appliance named MyPDW  
dwloader.exe -S MyPDW-SQLCTL01 -U mylogin -P 123jkl -f /configfiles/loadparamfile.txt  

認証を使用する同じWindowsします。

--Load over Ethernet  
dwloader.exe -S 10.192.63.148 -W -f /configfiles/loadparamfile.txt  
  
--Load over InfiniBand to appliance named MyPDW  
dwloader.exe -S MyPDW-SQLCTL01 -W -f /configfiles/loadparamfile.txt  

ソース ファイルとエラー ファイルに引数を使用する例。

--Load over Ethernet  
dwloader.exe -U mylogin -P 123jkl -S 10.192.63.148  -i C:\SQLData\AWDimEmployees.csv -T AdventureWorksPDW2012.dbo.DimEmployees -R C:\SQLData\LoadErrors  

B. AdventureWorks テーブルにデータを読み込む

次の例は、 AdventureWorksPDW2012 にデータを読み込むバッチ スクリプトの一部です。 完全なスクリプトを表示するには、 AdventureWorksPDW2012 インストール aw_create.batに含むファイルを開きます。

次のスクリプト スニペットでは、dwloader を使用して DimAccount テーブルと DimCurrency テーブルにデータを読み込む。 このスクリプトでは、イーサネット アドレスを使用しています。 InfiniBand を使用している場合、サーバーはappliance_name>-SQLCTL01

set server=10.193.63.134  
set user=<MyUser>  
set password=<MyPassword>  
  
set schema=AdventureWorksPDW2012.dbo  
set load="C:\Program Files\Microsoft SQL Server Parallel Data Warehouse\100\dwloader.exe"  
set mode=reload  
  
--Loads data into the AdventureWorksPDW2012.dbo.DimAccount table  
--Source data is stored in the file DimAccount.txt,   
--which is in the current directory.  
  
set t1=DimAccount  
%load% -S %server% -E -M %mode% -e Utf16 -i .\%t1%.txt -T %schema%.%t1% -R %t1%.bad -t "|" -r \r\n -U %user% -P %password%   
  
--Loads data from the DimCurrency.txt file into  
--AdventureWorksPDW2012.dbo.DimCurrency  
set t1=DimCurrency  
%load% -S %server% -E -M %mode% -e Utf16 -i .\%t1%.txt -T %schema%.%t1% -R %t1%.bad -t "|" -r \r\n -U %user% -P %password%  

DimAccount テーブルの DDL を次に示します。

CREATE TABLE DimAccount(  
AccountKey int NOT NULL,  
ParentAccountKey int,  
AccountCodeAlternateKey int,  
ParentAccountCodeAlternateKey int,  
AccountDescription nvarchar(50),  
AccountType nvarchar(50),  
Operator nvarchar(50),  
CustomMembers nvarchar(300),  
ValueType nvarchar(50),  
CustomMemberOptions nvarchar(200))  
with (CLUSTERED INDEX(AccountKey),  
DISTRIBUTION = REPLICATE);  

次に示すのは、テーブル DimAccount に読み込DimAccount.txtデータを含むデータ ファイルの例です。

--Sample of data in the DimAccount.txt load file.  
  
1||1||Balance Sheet||~||Currency|  
2|1|10|1|Assets|Assets|+||Currency|  
3|2|110|10|Current Assets|Assets|+||Currency|  
4|3|1110|110|Cash|Assets|+||Currency|  
5|3|1120|110|Receivables|Assets|+||Currency|  
6|5|1130|1120|Trade Receivables|Assets|+||Currency|  
7|5|1140|1120|Other Receivables|Assets|+||Currency|  
8|3|1150|110|Allowance for Bad Debt|Assets|+||Currency|  
9|3|1160|110|Inventory|Assets|+||Currency|  
10|9|1162|1160|Raw Materials|Assets|+||Currency|  
11|9|1164|1160|Work in Process|Assets|+||Currency|  
12|9|1166|1160|Finished Goods|Assets|+||Currency|  
13|3|1170|110|Deferred Taxes|Assets|+||Currency|  

C. コマンド ラインからデータを読み込む

次の例に示すように、例 B のスクリプトを置き換えるには、コマンド ラインですべてのパラメーターを入力します。

C:\Program Files\Microsoft SQL Server Parallel Data Warehouse\100\dwloader.exe -S <Control node IP> -E -M reload -e UTF16 -i .\DimAccount.txt -T AdventureWorksPDW2012.dbo.DimAccount -R DimAccount.bad -t "|" -r \r\n -U <login> -P <password>  

コマンド ライン パラメーターの説明:

  • C:\Program Files\Microsoft SQL Server Parallel Data Warehouse\100\dwloader.exeがインストールされている場所dwloader.exe。

  • -S の 後に制御ノードの IP アドレスが続きます。

  • -E は 、空の文字列を NULL として読み込む場合に指定します。

  • -M reload は 、コピー先テーブルがソース データを挿入する前に切り捨て先テーブルを切り捨てる場合に指定します。

  • -e UTF16 は 、ソース ファイルでリトル エンディアン文字エンコード型を使用します。

  • -i .\DimAccount.txt 、現在のディレクトリに存在する DimAccount.txt という名前のファイルにデータが含まれます。

  • -T AdventureWorksPDW2012.dbo.DimAccount は、データを受信するテーブルの 3 部構成の名前を指定します。

  • -R DimAccount.bad は、読み込めなかった行が DimAccount.bad という名前のファイルに書き込まれるように指定します。

  • -t "|" は、入力ファイル内のフィールドをDimAccount.txtパイプ文字で区切られた値を示します。

  • -r \r\n 、キャリッジ リターンDimAccount.txt改行文字で終わる各行を指定します。

  • -U login_name> -P <password は> 、読み込みを実行する権限を持つログインのログインとパスワードを指定します。