Dwloader-Befehlszeilenladeprogramm für paralleles Data Warehouse

dwloader ist ein Parallel Data Warehouse (PDW)-Befehlszeilentool, das Tabellenzeilen in Massen in eine vorhandene Tabelle lädt. Beim Laden von Zeilen können Sie alle Zeilen am Ende der Tabelle hinzufügen (Anfügemodus oder Fastappend-Modus), neue Zeilen anfügen und vorhandene Zeilen aktualisieren (Upsert-Modus) oder alle vorhandenen Zeilen vor dem Laden löschen und dann alle Zeilen in eine leere Tabelle einfügen (Lademodus).

Prozess zum Laden von Daten

  1. Vorbereiten der Quelldaten.

    Verwenden Sie Ihren eigenen ETL-Prozess, um die Quelldaten zu erstellen, die Sie laden möchten. Die Quelldaten müssen so formatiert werden, dass sie mit dem Schema der Zieltabelle übereinstimmen. Speichern Sie die Quelldaten in einer oder mehreren Textdateien, und kopieren Sie die Textdateien in dasselbe Verzeichnis auf Ihrem Ladeserver. Informationen zum Ladeserver finden Sie unter Abrufen und Konfigurieren eines Ladeservers

  2. Bereiten Sie die Ladeoptionen vor.

    Entscheiden Sie, welche Ladeoptionen Sie verwenden werden. Speichern Sie die Ladeoptionen in einer Konfigurationsdatei. Kopieren Sie die Konfigurationsdatei an einen lokalen Speicherort auf dem Ladeserver. Die Dwloader-Konfigurationsoptionen werden in diesem Thema beschrieben.

  3. Bereiten Sie die Ladefehleroptionen vor.

    Legen Sie fest, wie dwloader Zeilen behandeln soll, die nicht geladen werden können. Zum Ausführen der Last lädt dwloader die Daten zuerst in eine Stagingtabelle und überträgt dann die Daten an die Zieltabelle. Wenn das Ladeprogramm Daten in die Stagingtabelle lädt, verfolgt er die Anzahl der Zeilen, die nicht geladen werden können. Zeilen, die nicht ordnungsgemäß formatiert sind, können beispielsweise nicht geladen werden. Fehlgeschlagene Zeilen werden in eine Ablehnungsdatei kopiert. Standardmäßig wird das Laden nach der ersten Ablehnung abgebrochen, es sei denn, Sie geben einen anderen Ablehnungsschwellenwert an.

  4. Installieren Sie dwloader.

    Installieren Sie dwloader auf dem Ladeserver, wenn sie noch nicht installiert ist.

  1. Führen Sie dwloader aus.

    Melden Sie sich beim Ladeserver an, und führen Sie die ausführbare dwloader.exe mit den entsprechenden Befehlszeilenoptionen aus.

  2. Überprüfen Sie die Ergebnisse.

    Sie können die Datei mit fehlgeschlagenen Zeilen (angegeben mit -R) überprüfen, um festzustellen, ob Zeilen nicht geladen werden konnten. Wenn diese Datei leer ist, wurden alle Zeilen erfolgreich geladen. Dwloader ist transaktional. Wenn also ein Schritt fehlschlägt (außer abgelehnten Zeilen), werden alle Schritte zurück in den Anfangszustand zurückgerollt.

Syntax

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 ]   
}  

Argumente

-h
Zeigt einfache Hilfeinformationen zur Verwendung des Ladeprogramms an. Die Hilfe wird nur angezeigt, wenn keine anderen Befehlszeilenparameter angegeben werden.

-Ulogin_name
Eine gültige SQL Server-Authentifizierungsanmeldung mit entsprechenden Berechtigungen zum Ausführen der Last.

-Ppassword
Das Kennwort für eine SQL Server-Authentifizierung login_name.

-W
Windows-Authentifizierung verwenden. (Kein login_name oder Kennwort erforderlich.)

-fparameter_file_name
Verwenden Sie anstelle von Befehlszeilenparametern eine Parameterdatei, parameter_file_name. parameter_file_name kann alle Befehlszeilenparameter außer user_name und Kennwort enthalten. Wenn in der Befehlszeile und in der Parameterdatei ein Parameter angegeben wird, überschreibt die Befehlszeile den Dateiparameter.

Die Parameterdatei enthält einen Parameter, ohne das - Präfix, pro Zeile.

Beispiele:

rt=percentage

rv=25

-Starget_appliance
Gibt die SQL Server-PDW-Appliance an, die die geladenen Daten empfängt.

Bei Infiniband-Verbindungen wird target_appliance als <Appliance-Name-SQLCTL01> angegeben. Informationen zum Konfigurieren dieser benannten Verbindung finden Sie unter Konfigurieren von InfiniBand-Netzwerkadaptern.

Bei Ethernet-Verbindungen ist target_appliance die IP-Adresse für den Control-Knotencluster.

Wenn dieser Wert nicht angegeben wird, wird dwloader standardmäßig auf den Wert festgelegt, der beim Installieren des Dwloaders angegeben wurde.

-Ttarget_database_name.[Schema].Table_name
Der dreiteilige Name für die Zieltabelle.

-Ichsource_data_location
Der Speicherort einer oder mehrerer Quelldateien, die geladen werden sollen. Jede Quelldatei muss eine Textdatei oder eine Textdatei sein, die mit gzip komprimiert wird. In jeder Gzip-Datei kann nur eine Quelldatei komprimiert werden.

So formatieren Sie eine Quelldatei:

  • Die Quelldatei muss gemäß den Ladeoptionen formatiert werden.

  • Jede Zeile in einer Quelldatei enthält die Daten für eine Tabellenzeile. Die Quelldaten müssen mit dem Schema der Zieltabelle übereinstimmen. Spaltenreihenfolge und Datentypen müssen ebenfalls übereinstimmen. Jedes Feld in der Zeile stellt eine Spalte in der Zieltabelle dar.

  • Standardmäßig sind die Felder variable Länge und durch ein Trennzeichen getrennt. Um den Trennzeichentyp anzugeben, verwenden Sie die <variable_length_column_options> Befehlszeilenoptionen. Verwenden Sie zum Angeben von Feldern mit fester Länge die <fixed_width_column_options> Befehlszeilenoptionen.

So geben Sie den Quelldatenspeicherort an:

  • Der Quelldatenspeicherort kann ein Netzwerkpfad oder ein lokaler Pfad zu einem Verzeichnis auf dem Ladeserver sein.

  • Um alle Dateien in einem Verzeichnis anzugeben, geben Sie den Verzeichnispfad gefolgt vom Platzhalterzeichen * ein. Das Ladeprogramm lädt keine Dateien aus Unterverzeichnissen, die sich im Quelldatenspeicherort befinden. Fehler beim Laden, wenn ein Verzeichnis in einer gzip-Datei vorhanden ist.

  • Wenn Sie einige der Dateien in einem Verzeichnis angeben möchten, verwenden Sie eine Kombination aus Zeichen und dem * -Wildcard.

So laden Sie mehrere Dateien mit einem Befehl:

  • Alle Dateien müssen im selben Verzeichnis vorhanden sein.

  • Die Dateien müssen alle Textdateien, alle Gzip-Dateien oder eine Kombination aus Text- und Gzip-Dateien sein.

  • Keine der Dateien kann Kopfzeileninformationen enthalten.

  • Alle Dateien müssen denselben Zeichencodierungstyp verwenden. Siehe die Option "-e".

  • Alle Dateien müssen in dieselbe Tabelle geladen werden.

  • Alle Dateien werden verkettet und geladen, als wären sie eine Datei, und die abgelehnten Zeilen werden zu einer einzigen Ablehnungsdatei verschoben.

Beispiele:

  • -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
Wenn Ladefehler auftreten, speichert dwloader die Zeile, die nicht geladen werden konnte, und die Fehlerbeschreibung die Fehlerinformationen in einer Datei mit dem Namen load_failure_file_name. Wenn diese Datei bereits vorhanden ist, überschreibt dwloader die vorhandene Datei. load_failure_file_name wird erstellt, wenn der erste Fehler auftritt. Wenn alle Zeilen erfolgreich geladen werden, wird load_failure_file_name nicht erstellt.

-fhnumber_header_rows
Die Anzahl der Zeilen (Zeilen), die am Anfang der source_data_file_name ignoriert werden sollen. Der Standardwert ist 0.

<variable_length_column_options>
Die Optionen für eine source_data_file_name , die spalten mit zeichentrennzeichentrennter Variabler Länge enthält. Standardmäßig enthält source_data_file_name ASCII-Zeichen in Spalten mit variabler Länge.

Bei ASCII-Dateien werden NULLs durch aufeinander folgende Trennzeichen dargestellt. In einer durch Pipe getrennten Datei ("|") wird z. B. ein NULL-Wert durch "||" angegeben. In einer durch Trennzeichen getrennten Datei wird ein NULL-Wert durch ",", angegeben. Darüber hinaus muss die Option -E (--emptyStringAsNull) angegeben werden. Weitere Informationen zu -E finden Sie unten.

-echaracter_encoding
Gibt einen Zeichencodierungstyp für die Daten an, die aus der Datendatei geladen werden sollen. Optionen sind ASCII (Standard), UTF8, UTF16 oder UTF16BE, wobei UTF16 wenig Endian ist und UTF16BE ein großer Endianer ist. Bei diesen Optionen wird die Groß-/Kleinschreibung nicht beachtet.

-tfield_delimiter
Das Trennzeichen für jedes Feld (Spalte) in der Zeile. Das Feldtrennzeichen ist ein oder mehrere dieser ASCII-Escapezeichen oder ASCII-Hexadexwerte.

Name Escape-Zeichen Hexzeichen
Registerkarte \t 0x09
Wagenrücklauf (CR) \r 0x0d
Zeilenvorschub (Line Feed, LF) \n 0x0A
CRLF \r\n 0x0d0x0a
Comma ',' 0x2c
Doppeltes Anführungszeichen \" 0x22
Einfaches Anführungszeichen \' 0x27

Um das Pipezeichen in der Befehlszeile anzugeben, schließen Sie es in doppelte Anführungszeichen ein, "|". Dadurch wird eine Fehlinterpretation durch den Befehlszeilenparser vermieden. Andere Zeichen sind in einfache Anführungszeichen eingeschlossen.

Beispiele:

-t "|"

-t ' '

-t 0x0a

-t \t

-t '~|~'

-rrow_delimiter
Das Trennzeichen für jede Zeile der Quelldatendatei. Das Zeilentrennzeichen ist ein oder mehrere ASCII-Werte.

Zum Angeben eines Wagenrücklaufs (CR), Zeilenfeeds (LF) oder eines Tabstoppzeichens als Trennzeichen können Sie die Escapezeichen (\r, \n, \t) oder deren Hexwerte (0x, 0d, 09) verwenden. Wenn Sie andere Sonderzeichen als Trennzeichen angeben möchten, verwenden Sie deren Hexadexwert.

Beispiele für CR+LF:

-r \r\n

-r 0x0d0x0a

Beispiele für CR:

-r \r

-r 0x0d

Beispiele für LF:

-r \n

-r 0x0a

Für Unix ist ein LF erforderlich. Für Windows ist eine CR erforderlich.

-sstring_delimiter
Das Trennzeichen für das Zeichenfolgendatentypfeld einer texttrenntrennten Eingabedatei. Das Zeichenfolgentrennzeichen ist ein oder mehrere ASCII-Werte. Sie kann als Zeichen (z. B. -s *) oder als Hexwert (z. B. -s 0x22 für ein doppeltes Anführungszeichen) angegeben werden.

Beispiele:

-s *

-s 0x22

< fixed_width_column_options>
Die Optionen für eine Quelldatendatei mit Spalten mit fester Länge. Standardmäßig enthält source_data_file_name ASCII-Zeichen in Spalten mit variabler Länge.

Spalten mit fester Breite werden nicht unterstützt, wenn -e UTF8 ist.

-wfixed_width_config_file
Pfad und Name der Konfigurationsdatei, die die Anzahl der Zeichen in jeder Spalte angibt. Jedes Feld muss angegeben werden.

Diese Datei muss sich auf dem Ladeserver befinden. Der Pfad kann ein UNC-, relativer oder absoluter Pfad sein. Jede Zeile in fixed_width_config_file enthält den Namen einer Spalte und die Anzahl der Zeichen für diese Spalte. Es gibt eine Zeile pro Spalte wie folgt, und die Reihenfolge in der Datei muss mit der Reihenfolge in der Zieltabelle übereinstimmen:

=column_name num_chars

=column_name num_chars

Konfigurationsdatei mit fester Breite:

SalesCode=3

SalesID=10

Beispielzeilen in source_data_file_name:

230Shirts0056

320Towels1356

Im vorherigen Beispiel verfügt die erste geladene Zeile über SalesCode='230' und SalesID='Shirts0056'. Die zweite geladene Zeile hat SalesCode='320' und SaleID='Towels1356'.

Informationen zum Behandeln von führenden und nachgestellten Leerzeichen oder Datentypkonvertierungen im Modus mit fester Breite finden Sie unter Datentypkonvertierungsregeln für dwloader.

-echaracter_encoding
Gibt einen Zeichencodierungstyp für die Daten an, die aus der Datendatei geladen werden sollen. Optionen sind ASCII (Standard), UTF8, UTF16 oder UTF16BE, wobei UTF16 wenig Endian ist und UTF16BE ein großer Endianer ist. Bei diesen Optionen wird die Groß-/Kleinschreibung nicht beachtet.

Spalten mit fester Breite werden nicht unterstützt, wenn -e UTF8 ist.

-rrow_delimiter
Das Trennzeichen für jede Zeile der Quelldatendatei. Das Zeilentrennzeichen ist ein oder mehrere ASCII-Werte.

Zum Angeben eines Wagenrücklaufs (CR), Zeilenfeeds (LF) oder eines Tabstoppzeichens als Trennzeichen können Sie die Escapezeichen (\r, \n, \t) oder deren Hexwerte (0x, 0d, 09) verwenden. Wenn Sie andere Sonderzeichen als Trennzeichen angeben möchten, verwenden Sie deren Hexadexwert.

Beispiele für CR+LF:

-r \r\n

-r 0x0d0x0a

Beispiele für CR:

-r \r

-r 0x0d

Beispiele für LF:

-r \n

-r 0x0a

Für Unix ist ein LF erforderlich. Für Windows ist eine CR erforderlich.

-D { ymd | ydm | mdy | myd | dmy | dym | custom_date_format }
Gibt die Reihenfolge von Monat (m), Tag (d) und Jahr (y) für alle Datetime-Felder in der Eingabedatei an. Die Standardreihenfolge ist ymd. Verwenden Sie die Option "-dt", um mehrere Reihenfolgeformate für dieselbe Quelldatei anzugeben.

ymd | Dmy
ydm und dmy ermöglichen dieselben Eingabeformate. Beide erlauben, dass das Jahr am Anfang oder am Ende des Datums sein kann. Beispielsweise könnten Sie für ydm- und dmy-Datumsformate 2013-02-03 oder 02-03-2013 in der Eingabedatei haben.

ydm
Eingaben, die als ydm formatiert sind, können nur in Spalten vom Datentyp "datetime" und "smalldatetime" geladen werden. Sie können ydm-Werte nicht in eine Spalte des Datentyps "datetime2", "date" oder "datetimeoffset" laden.

dmy
mdy ermöglicht <Monatsraum-Tag-Kommajahr>><><><><.

Beispiele für mdy-Eingabedaten für den 1. Januar 1975:

  • 1. Januar 1975

  • 01. Januar 75

  • 1.1.75. Januar

  • 01011975

myd
Eingabedateibeispiele für märz 04.2010: 03-2010-04, 3/2010/4

dym
Eingabedateibeispiele für den 04. März 2010: 04-2010-03, 4/2010/3

custom_date_format
custom_date_format ist ein benutzerdefiniertes Datumsformat (z. B. MM/TT/JJJJ), das nur aus Gründen der Abwärtskompatibilität enthalten ist. Dwloader erzwingt das benutzerdefinierte Datumsformat nicht. Wenn Sie stattdessen ein benutzerdefiniertes Datumsformat angeben, konvertiert dwloader es in die entsprechende Einstellung von ymd, ydm, mdy, myd, dym oder dmy.

Wenn Sie z. B. "-D MM/TT/JJJJ" angeben, erwartet dwloader, dass alle Datumseingaben zuerst mit Monat, Tag und jahr (mdy) sortiert werden. Es erzwingt nicht 2 Zeichenmonate, 2-stellige Tage und 4-stellige Jahre, wie im benutzerdefinierten Datumsformat angegeben. Im Folgenden finden Sie einige Beispiele dafür, wie Datumsangaben in der Eingabedatei formatiert werden können, wenn das Datumsformat "-D MM/tt/jjjj" lautet: 01.02.2013, 02.02.2013, 1.2.2013

Ausführlichere Formatierungsinformationen finden Sie unter Datentypkonvertierungsregeln für dwloader.

-dtdatetime_format_file
Jedes Datetime-Format wird in einer Datei mit dem Namen datetime_format_file angegeben. Im Gegensatz zu den Befehlszeilenparametern dürfen Dateiparameter, die Leerzeichen enthalten, nicht in doppelte Anführungszeichen eingeschlossen werden. Sie können das Datumstimeformat nicht ändern, während Sie Daten laden. Die Quelldatendatei und die entsprechende Spalte in der Zieltabelle müssen dasselbe Format aufweisen.

Jede Zeile enthält den Namen einer Spalte in der Zieltabelle und das Datums-/Uhrzeitformat.

Beispiele:

LastReceiptDate=ymd

ModifiedDate=dym

-dstaging_database_name
Der Datenbankname, der die Stagingtabelle enthält. Der Standardwert ist die Datenbank, die mit der Option "-T" angegeben ist. Dabei handelt es sich um die Datenbank für die Zieltabelle. Weitere Informationen zur Verwendung einer Stagingdatenbank finden Sie unter Erstellen der Stagingdatenbank.

-Mload_mode_option
Gibt an, ob Daten angefügt, upsert oder neu geladen werden sollen. Der Standardmodus wird angefügt.

anfügen
Das Ladeprogramm fügt Zeilen am Ende vorhandener Zeilen in die Zieltabelle ein.

fastappend
Das Ladeprogramm fügt Zeilen direkt ein, ohne eine temporäre Tabelle zu verwenden, an das Ende vorhandener Zeilen in der Zieltabelle. fastappend erfordert die Option "Multitransaktion (-m)". Bei Verwendung von fastappend kann keine Stagingdatenbank angegeben werden. Es gibt kein Rollback mit fastappend. Dies bedeutet, dass die Wiederherstellung von einer fehlgeschlagenen oder abgebrochenen Last von Ihrem eigenen Ladevorgang behandelt werden muss.

upsert -Kmerge_column [ ,...n ]
Das Ladeprogramm verwendet die SQL Server Merge-Anweisung, um vorhandene Zeilen zu aktualisieren und neue Zeilen einzufügen.

Die Option -K gibt die Spalte oder Spalten an, auf denen der Seriendruck basieren soll. Diese Spalten bilden einen Seriendruckschlüssel, der eine eindeutige Zeile darstellen soll. Wenn der Seriendruckschlüssel in der Zieltabelle vorhanden ist, wird die Zeile aktualisiert. Wenn der Seriendruckschlüssel in der Zieltabelle nicht vorhanden ist, wird die Zeile angefügt.

Bei verteilten Hashtabellen muss der Seriendruckschlüssel die Verteilungsspalte sein oder enthalten.

Bei replizierten Tabellen ist der Seriendruckschlüssel die Kombination aus einer oder mehreren Spalten. Diese Spalten werden gemäß den Anforderungen der Anwendung angegeben.

Mehrere Spalten müssen durch Kommas getrennt werden, ohne Leerzeichen oder kommatrennt mit Leerzeichen und in einfache Anführungszeichen eingeschlossen.

Wenn zwei Zeilen in der Quelltabelle übereinstimmende Zusammenführungsschlüsselwerte aufweisen, müssen die entsprechenden Zeilen identisch sein.

reload
Das Ladeprogramm schneidet die Zieltabelle ab, bevor die Quelldaten eingefügt werden.

-bbatchsize
Die Batchgröße wird nur für die Verwendung durch den Microsoft-Support empfohlen. Batchgröße ist die SQL Server-Batchgröße für die Massenkopie, die DMS in SQL Server-Instanzen auf den Computeknoten ausführt. Wenn batchsize angegeben wird, überschreibt SQL Server PDW die Batchladegröße, die für jede Last dynamisch berechnet wird.

Ab SQL Server 2012 PDW berechnet der Steuerelementknoten standardmäßig eine Batchgröße für jede Last. Diese automatische Berechnung basiert auf mehreren Parametern wie Arbeitsspeichergröße, Zieltabellentyp, Zieltabellenschema, Ladetyp, Dateigröße und Ressourcenklasse des Benutzers.

Wenn der Lademodus z. B. FASTAPPEND ist und die Tabelle über einen gruppierten Spaltenspeicherindex verfügt, versucht SQL Server PDW standardmäßig, eine Batchgröße von 1.048.576 zu verwenden, damit Zeilengruppen geschlossen und direkt in den Columnstore geladen werden, ohne den Deltaspeicher zu durchlaufen. Wenn der Arbeitsspeicher die Batchgröße von 1.048.576 nicht zulässt, wählt dwloader eine kleinere Batchgröße aus.

Wenn der Ladetyp FASTAPPEND ist, gilt die Batchgröße für das Laden von Daten in die Tabelle, andernfalls gilt batchsize für das Laden von Daten in die Stagingtabelle.

<reject_options>
Gibt Optionen zum Bestimmen der Anzahl von Ladefehlern an, die vom Loader zugelassen werden. Wenn die Ladefehler den Schwellenwert überschreiten, wird der Ladevorgang angehalten und keine Zeilen ausgeführt.

-rt { Wert | Prozentsatz }
Gibt an, ob die Option -reject_value in der Option -rvreject_value eine Literalanzahl von Zeilen (Wert) oder eine Fehlerrate (Prozentsatz) ist. Der Standardwert ist wert.

Die Prozentuale Option ist eine Echtzeitberechnung, die in Intervallen gemäß der Option -rs erfolgt.

Wenn das Ladeprogramm beispielsweise versucht, 100 Zeilen zu laden, und 25 fehlschlägt und 75 erfolgreich ist, beträgt die Fehlerrate 25 %.

-rvreject_value
Gibt die Anzahl oder den Prozentsatz der Zeilenrückweisungen an, die vor dem Anhalten der Last zulässig sind. Die Option "-rt " bestimmt, ob reject_value auf die Anzahl der Zeilen oder den Prozentsatz der Zeilen verweist.

Der Standardwert reject_value ist 0.

Bei Verwendung mit dem Wert "-rt" stoppt das Ladeprogramm die Last, wenn die Anzahl der abgelehnten Zeilen reject_value überschreitet.

Bei Verwendung mit -rt Prozent berechnet der Ladeprogramm den Prozentsatz in Intervallen (-rs-Option). Daher kann der Prozentsatz der fehlgeschlagenen Zeilen reject_value überschreiten.

-rsreject_sample_size
Wird mit der -rt percentage Option verwendet, um die inkrementellen Prozentprüfungen anzugeben. Wenn reject_sample_size beispielsweise 1000 ist, berechnet das Ladeprogramm den Prozentsatz der fehlgeschlagenen Zeilen, nachdem versucht wurde, 1000 Zeilen zu laden. Er berechnet den Prozentsatz der fehlgeschlagenen Zeilen neu, nachdem versucht wird, jede zusätzliche 1000 Zeilen zu laden.

-c
Entfernt Leerzeichen von der linken und rechten Seite von Char-, nchar-, varchar- und nvarchar-Feldern. Konvertiert jedes Feld, das nur Leerzeichen enthält, in die leere Zeichenfolge.

Beispiele:

' ' wird abgeschnitten zu ''

' abc ' wird abgeschnitten zu 'abc'

Wenn -c mit -E verwendet wird, erfolgt der -E-Vorgang zuerst. Felder, die nur Leerzeichen enthalten, werden in die leere Zeichenfolge und nicht in NULL konvertiert.

-E
Konvertieren Sie leere Zeichenfolgen in NULL. Die Standardeinstellung besteht darin, diese Konvertierungen nicht auszuführen.

-m
Verwenden Sie den Multitransaktionsmodus für die zweite Ladephase; beim Laden von Daten aus der Stagingtabelle in eine verteilte Tabelle.

Mit -m führt SQL Server PDW Parallele durch und führt Commits durch. Dies führt viel schneller aus als der Standardlademodus, ist jedoch nicht transaktionssicher.

Ohne -m führt SQL Server PDW serielle Lasten über die Verteilungen in jedem Computeknoten und gleichzeitig über die Computeknoten hinweg durch. Diese Methode ist langsamer als der Multitransaktionsmodus, ist jedoch transaktionssicher.

-m ist optional für anfügen, neu laden und upsert.

-m ist für fastappend erforderlich.

-m kann nicht mit replizierten Tabellen verwendet werden.

-m gilt nur für die zweite Ladephase. Sie gilt nicht für die erste Ladephase; Laden von Daten in die Stagingtabelle.

Es gibt keinen Rollback mit multitransaktionsbasiertem Modus. Dies bedeutet, dass die Wiederherstellung von einer fehlgeschlagenen oder abgebrochenen Last von Ihrem eigenen Ladevorgang verarbeitet werden muss.

Es wird empfohlen, "-m" nur beim Laden in eine leere Tabelle zu verwenden, damit Sie ohne Datenverlust wiederherstellen können. Um einen Ladefehler wiederherzustellen: Legen Sie die Zieltabelle ab, beheben Sie das Ladeproblem, erstellen Sie die Zieltabelle erneut, und führen Sie die Ladevorgang erneut aus.

-N
Überprüfen Sie, ob die Zielanwendung über ein gültiges SQL Server-PDW-Zertifikat von einer vertrauenswürdigen Autorität verfügt. Verwenden Sie diese, um sicherzustellen, dass Ihre Daten nicht von einem Angreifer entführert und an einen nicht autorisierten Ort gesendet werden. Das Zertifikat muss bereits auf der Appliance installiert sein. Die einzige unterstützte Möglichkeit zum Installieren des Zertifikats ist für den Appliance-Administrator, es mithilfe des Configuration Manager-Tools zu installieren. Fragen Sie Den Appliance-Administrator, wenn Sie nicht sicher sind, ob die Appliance über ein vertrauenswürdiges Zertifikat verfügt.

-Se
Laden leerer Dateien überspringen. Dadurch wird auch das Entkomprimieren leerer Gzip-Dateien übersprungen.

-l
Verfügbar mit CU7.4-Update, gibt die maximale Zeilenlänge (in Bytes) an, die geladen werden kann. Gültige Werte sind ganze Zahlen zwischen 32768 und 33554432. Verwenden Sie nur bei Bedarf, um große Zeilen (größer als 32 KB) zu laden, da dadurch mehr Arbeitsspeicher auf dem Client und server zugewiesen wird.

Rückgabecodewerte

0 (Erfolg) oder ein anderer ganzzahliger Wert (Fehler)

Verwenden Sie errorlevel in einem Befehlsfenster oder einer Batchdatei die Anzeige des Rückgabecodes. Beispiel:

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

Verwenden Sie bei Verwendung $LastExitCodevon PowerShell .

Berechtigungen

Erfordert LOAD-Berechtigung und entsprechende Berechtigungen (INSERT, UPDATE, DELETE) in der Zieltabelle. Erfordert CREATE-Berechtigung (zum Erstellen einer temporären Tabelle) in der Stagingdatenbank. Wenn keine Stagingdatenbank verwendet wird, ist für die Zieldatenbank CREATE-Berechtigung erforderlich.

Allgemeine Hinweise

Informationen zu Datentypkonvertierungen beim Laden mit dwloader finden Sie unter Datentypkonvertierungsregeln für dwloader.

Wenn ein Parameter mindestens ein Leerzeichen enthält, schließen Sie den Parameter mit doppelten Anführungszeichen ein.

Sie sollten das Ladeprogramm vom installierten Speicherort aus ausführen. Die ausführbare Datei dwloader ist mit der Appliance vorinstalliert und befindet sich im Verzeichnis "C:\Programme\Microsoft SQL Server Data Warehouse\DWLoader".

Sie können einen Parameter überschreiben, der in der Parameterdatei (-f-Option) angegeben ist, indem Sie ihn als Befehlszeilenparameter angeben.

Sie können mehrere Instanzen des Loader gleichzeitig ausführen. Die maximale Anzahl von Loader-Instanzen ist vorkonfiguriert und kann nicht geändert werden.

Geladene Daten erfordern möglicherweise mehr oder weniger Speicherplatz auf der Appliance als am Quellspeicherort. Sie können Testimporte mit Teilmengen von Daten durchführen, um den Datenträgerverbrauch zu schätzen.

Obwohl es sich bei dwloader um einen Transaktionsvorgang handelt und ein Rollback ordnungsgemäß ausgeführt wird, kann es nicht zurückgesetzt werden, nachdem die Massenlast erfolgreich abgeschlossen wurde. Um einen aktiven Dwloaderprozess abzubrechen, geben Sie STRG+C ein.

Einschränkungen

Die Gesamtgröße aller gleichzeitig auftretenden Lasten muss kleiner als LOG_SIZE für die Datenbank sein, und es wird empfohlen, dass die Gesamtgröße aller gleichzeitigen Lasten kleiner als 50 % der LOG_SIZE ist. Um diese Größenbeschränkung zu erreichen, können Sie große Lasten in mehrere Batches aufteilen. Weitere Informationen zu LOG_SIZE finden Sie unter CREATE DATABASE

Beim Laden mehrerer Dateien mit einem Ladebefehl werden alle abgelehnten Zeilen in dieselbe Ablehnungsdatei geschrieben. Die Ablehnungsdatei zeigt nicht an, welche Eingabedatei jede abgelehnte Zeile enthält.

Die leere Zeichenfolge sollte nicht als Trennzeichen verwendet werden. Wenn eine leere Zeichenfolge als Zeilentrennzeichen verwendet wird, schlägt das Laden fehl. Bei Verwendung als Spaltentrennzeichen ignoriert das Laden das Trennzeichen und verwendet weiterhin das Standardzeichen "|" als Spaltentrennzeichen. Bei Verwendung als Zeichenfolgentrennzeichen wird die leere Zeichenfolge ignoriert, und das Standardverhalten wird angewendet.

Sperrverhalten

Das Dwloader-Sperrverhalten variiert je nach load_mode_option.

  • append - Append ist die empfohlene und am häufigsten verwendete Option. Fügen Sie Daten in eine Stagingtabelle an. Die Sperrung wird unten ausführlich beschrieben.

  • schnelles Anfügen : Schnelles Anfügen wird direkt in die endgültige Tabelle geladen, wobei eine ExclusiveUpdate-Tabellensperre verwendet wird und der einzige Modus ist, der keine Stagingtabelle verwendet.

  • reload - Laden Sie Daten in eine Stagingtabelle neu, und erfordert eine exklusive Sperre sowohl in der Stagingtabelle als auch in der endgültigen Tabelle. Das Erneute Laden wird für gleichzeitige Vorgänge nicht empfohlen.

  • upsert – Upsert lädt Daten in eine Stagingtabelle und führt dann einen Zusammenführungsvorgang aus der Stagingtabelle in die endgültige Tabelle aus. Upsert erfordert keine exklusiven Sperren für die endgültige Tabelle. Die Leistung kann variieren, wenn Sie upsert verwenden. Testen Sie das Verhalten in Ihrer Umgebung.

Sperrverhalten

Sperrung des Anfügemodus

Append can be run in multi-transactional mode (using the -m argument), but it is not transaction safe. Daher sollte "Append" als Transaktionsvorgang verwendet werden (ohne das Argument "-m" zu verwenden). Leider ist der Transaktionsmodus während des letzten INSERT-SELECT-Vorgangs derzeit etwa sechsmal langsamer als der Mehrtransaktionsmodus.

Der Anfügemodus lädt Daten in zwei Phasen. Phase 1 lädt Daten aus der Quelldatei gleichzeitig in eine Stagingtabelle (Fragmentierung kann auftreten). Phase 2 lädt Daten aus der Stagingtabelle in die endgültige Tabelle. In der zweiten Phase wird ein INSERT INTO ausgeführt... SELECT WITH (TABLOCK) -Vorgang. Die folgende Tabelle zeigt das Sperrverhalten in der endgültigen Tabelle und das Protokollierungsverhalten bei Verwendung des Anfügemodus:

Tabellentyp Multitransaktion
Modus (-m)
Tabelle ist leer Parallelität unterstützt Protokollierung
Heap Ja Ja Ja Mindestens
Heap Ja Nein Ja Mindestens
Heap Nein Ja Nein Mindestens
Heap Nein Nein Nein Mindestens
Cl Ja Ja Nein Mindestens
Cl Ja Nein Ja Vollständig
Cl Nein Ja Nein Mindestens
Cl Nein Nein Ja Vollständig

Die obige Tabelle zeigt dwloader unter Verwendung des Anfügemodus, der in eine Heap- oder eine CI-Tabelle (Clustered Index) geladen wird, mit oder ohne das Mehrtransaktionsflagge und Laden in eine leere Tabelle oder eine nicht leere Tabelle. Das Sperr- und Protokollierungsverhalten jeder solchen Lastkombination wird in der Tabelle angezeigt. Beispielsweise wird beim Laden (2. Phase) mit dem Anfügemodus in einen gruppierten Index ohne multitransaktionaler Modus und in eine leere Tabelle pdW eine exklusive Sperre für die Tabelle erstellt und die Protokollierung ist minimal. Dies bedeutet, dass ein Kunde nicht in der Lage ist, die Phase (2. Phase) und Abfrage gleichzeitig in eine leere Tabelle zu laden. Beim Laden mit derselben Konfiguration in eine nicht leere Tabelle gibt PDW jedoch keine exklusive Sperre für die Tabelle aus, und Parallelität ist möglich. Leider tritt die vollständige Protokollierung auf und verlangsamt den Prozess.

Beispiele

A. Einfaches Dwloader-Beispiel

Das folgende Beispiel zeigt die Initiierung des Ladeprogramms , wobei nur die erforderlichen Optionen ausgewählt sind. Weitere Optionen stammen aus der globalen Konfigurationsdatei "loadparamfile.txt".

Beispiel für die VERWENDUNG der SQL Server-Authentifizierung.

--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  

Dasselbe Beispiel unter Verwendung der Windows-Authentifizierung.

--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  

Beispiel für die Verwendung von Argumenten für eine Quelldatei und Fehlerdatei.

--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. Laden von Daten in eine AdventureWorks-Tabelle

Das folgende Beispiel ist Teil eines Batchskripts, das Daten in AdventureWorksPDW2012 lädt. Um das vollständige Skript anzuzeigen, öffnen Sie die Datei aw_create.bat, die im AdventureWorksPDW2012-Installationspaket enthalten ist.

Der folgende Skriptausschnitt verwendet dwloader, um Daten in die Tabellen "DimAccount" und "DimCurrency" zu laden. Dieses Skript verwendet eine Ethernet-Adresse. Bei Verwendung von InfiniBand wäre der Server 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%  

Es folgt die DDL für die DimAccount-Tabelle.

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);  

Es folgt ein Beispiel für die Datendatei DimAccount.txt, die Daten enthält, die in die Tabelle DimAccount geladen werden sollen.

--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. Laden von Daten aus der Befehlszeile

Das Skript in Beispiel B kann ersetzt werden, indem alle Parameter in der Befehlszeile eingegeben werden, wie im folgenden Beispiel gezeigt.

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>  

Beschreibung der Befehlszeilenparameter:

  • C:\Programme\Microsoft SQL Server Parallel Data Warehouse\100\dwloader.exe ist der installierte Speicherort von dwloader.exe.

  • -S folgt der IP-Adresse des Steuerelementknotens.

  • -E gibt an, leere Zeichenfolgen als NULL zu laden.

  • -M reload gibt an, dass die Zieltabelle abgeschnitten wird, bevor die Quelldaten eingefügt werden.

  • -e UTF16 gibt an, dass die Quelldatei den kleinen endischen Zeichencodierungstyp verwendet.

  • -i .\DimAccount.txt gibt an, dass sich die Daten in einer Datei namens DimAccount.txt befinden, die im aktuellen Verzeichnis vorhanden ist.

  • -T AdventureWorksPDW2012.dbo.DimAccount gibt den 3-teiligen Namen der Tabelle an, die die Daten empfangen soll.

  • -R DimAccount.bad gibt die Zeilen an, die nicht geladen werden können, in eine Datei namens DimAccount.bad geschrieben.

  • -t "|" gibt an, dass die Felder in der Eingabedatei DimAccount.txt mit dem Pipezeichen getrennt sind.

  • -r \r\n gibt jede Zeile in DimAccount.txt mit einem Wagenrücklauf und einem Zeilenvorschubzeichen an.

  • -U <login_name> -P-Kennwort <> gibt das Anmelde- und Kennwort für die Anmeldung an, die über Berechtigungen zum Ausführen des Ladens verfügt.