dwloader-Befehlszeile-Ladeprogramme für Parallel Data Warehouse
dwloader ist ein Parallel Data Warehouse (PDW)-Befehlszeilentool, das Tabellenzeilen in großen Mengen 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 (Neulademodus).
Prozess zum Laden von Daten
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 sein, dass sie dem Schema der Zieltabelle entsprechen. 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
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.
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 nach, 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.
Installieren Sie dwloader.
Installieren Sie dwloader auf den Ladeserver, wenn es noch nicht installiert ist.
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.
Ü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ückgesetzt.
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.
-U login_name
Eine gültige SQL Server-Authentifizierungsanmeldung mit entsprechenden Berechtigungen zum Ausführen der Last.
-P Kennwort
Das Passwort für eine SQL Server-Authentifizierung login_name.
-W
Windows-Authentifizierung verwenden. (Kein login_name oder Passwort erforderlich.)
-f parameter_file_name
Verwenden Sie anstelle von Befehlszeilenparametern eine Parameterdatei wie parameter_file_name. parameter_file_name kann alle Befehlszeilenparameter außer user_name und Passwort 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
-S target_appliance
Gibt die SQL Server-PDW-Anwendung 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 Steuerknoten-Cluster.
Wenn dieser Wert nicht angegeben wird, wird dwloader standardmäßig auf den Wert festgelegt, der beim Installieren des dwloaders angegeben wurde.
-T target_database_name.[Schema].table_name
Der dreiteilige Name für die Zieltabelle.
-I source_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 von variabler Länge und durch ein Trennzeichen getrennt. Um den Trennzeichentyp anzugeben, verwenden Sie die Befehlszeilenoptionen <variable_length_column_options>. Verwenden Sie zum Angeben von Feldern mit fester Länge die Befehlszeilenoptionen <fixed_width_column_options>.
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 Platzhalter *.
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. Die -e-Option anzeigen
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\*
-R load_failure_file_name
Wenn Ladefehler auftreten, speichert dwloader die Zeile, die nicht geladen werden konnte, und die Fehlerbeschreibung sowie 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.
-fh number_header_rows
Die Anzahl der Zeilen (Zeilen), die am Anfang von 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 Zeichenbegrenzung 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 weiter unten.
-e character_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 Little-Endian ist und UTF16BE big endian ist. Bei diesen Optionen wird keine Groß-/Kleinschreibung berücksichtigt.
-t field_delimiter
Das Trennzeichen für jedes Feld (Spalte) in der Zeile. Das Feldtrennzeichen ist eins oder mehrere dieser ASCII-Escapezeichen oder ASCII-Hex-Werte.
Name | Escape-Zeichen | Hex-Zeichen |
---|---|---|
Tab | \t | 0x09 |
Wagenrücklauf (CR) | \r | 0x0d |
Zeilenvorschub (LF) | \n | 0x0A |
CRLF | \r\n | 0x0d0x0a |
Komma | ',' | 0x2c |
Doppeltes Anführungszeichen | \" | 0x22 |
Einfaches Anführungszeichen | \' | 0x27 |
Um das Pipe-Zeichen 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 '~|~'
-r zeilen_trennzeichen
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 Hex-Werte (0x, 0d, 09) verwenden. Wenn Sie andere Sonderzeichen als Trennzeichen angeben möchten, verwenden Sie deren Hex-Wert.
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. Ein CR ist für Windows erforderlich.
-s string_delimiter
Das Trennzeichen für das Feld des Datentyps Zeichenkette in einer textgetrennten Eingabedatei. Das Zeichenfolgen-Trennzeichen ist ein oder mehrere ASCII-Werte. Sie kann als Zeichen (z. B. -s *) oder als Hex-Wert (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.
-w fixed_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.
-e character_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 Little-Endian ist und UTF16BE big endian ist. Bei diesen Optionen wird keine Groß-/Kleinschreibung berücksichtigt.
Spalten mit fester Breite werden nicht unterstützt, wenn -e UTF8 ist.
-r zeilen_trennzeichen
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 Hex-Werte (0x, 0d, 09) verwenden. Wenn Sie andere Sonderzeichen als Trennzeichen angeben möchten, verwenden Sie deren Hex-Wert.
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. Ein CR ist für Windows 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 ydm- und dmy-Datumsformate 2013-02-03 oder 02-03-2013 in der Eingabedatei sein.
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 <Monat><Leerzeichen><Tag><Komma><Jahr>.
Beispiele für mdy-Eingabedaten für den 1. Januar 1975:
1. Januar 1975
1. Januar 1975
1. Januar 1975
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 nach Monat, Tag und Jahr (mdy) sortiert werden. Es erzwingt nicht 2 Zeichen-Monate, 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.
-dt datetime_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 datetime-Format 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
-d staging_database_name
Der Datenbankname, die 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.
-M load_mode_option
Gibt an, ob Daten angefügt, Upsert aufgeführt 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 an das Ende vorhandener Zeilen in der Zieltabelle ein, ohne eine temporäre Tabelle zu verwenden. fastappend erfordert die Option „Multitransaktion (-m)“. Bei Verwendung von fastappend kann keine Stagingdatenbank angegeben werden. Es gibt keine Zurücksetzung mit fastappend. Dies bedeutet, dass die Wiederherstellung von einer fehlgeschlagenen oder abgebrochenen Last von Ihrem eigenen Ladevorgang behandelt werden muss.
upsert -K merge_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 die Zusammenführung basieren soll. Diese Spalten bilden einen Zusammenführungsschlüssel, der eine eindeutige Zeile darstellen soll. Wenn der Zusammenführungsschlüssel in der Zieltabelle vorhanden ist, wird die Zeile aktualisiert. Wenn der Zusammenführungsschlüssel in der Zieltabelle nicht vorhanden ist, wird die Zeile angefügt.
Bei verteilten Hash-Tabellen muss der Zusammenführungsschlüssel die Verteilungsspalte sein oder enthalten.
Bei replizierten Tabellen ist der Zusammenführungsschlüssel die Kombination aus einer oder mehreren Spalten. Diese Spalten werden gemäß den Anforderungen der Anwendung angegeben.
Mehrere Spalten müssen durch Kommas ohne Leerzeichen oder mit Leerzeichen getrennt und in einfache Anführungszeichen eingeschlossen werden.
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.
-b Batchgröße
Die Batchgröße wird nur für die Verwendung durch Microsoft-Support empfohlen. Sie ist die SQL Server-Batchgröße für die Massenkopie, die DMS in SQL Server-Instanzen auf den Compute-Knoten ausführt. Wenn Batchgröße 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 Delta-Store 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 Batchgröße für das Laden von Daten in die Stagingtabelle.
<reject_options>
Gibt Optionen zum Bestimmen der Anzahl von Ladefehlern an, die vom Ladeprogramm zugelassen werden. Wenn die Ladefehler den Schwellenwert überschreiten, wird der Ladevorgang angehalten und keine Zeilen ausgeführt.
-rt { Wert | Prozent }
Gibt an, ob -reject_value in die Option -rv reject_value eine Literalanzahl von Zeilen (Wert) oder eine Fehlerrate (Prozentsatz) ist. Der Standard 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 fehlschlagen und 75 erfolgreich sind, beträgt die Fehlerrate 25 %.
-rv reject_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 Standard 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.
-rs reject_sample_size
Wird mit der -rt percentage
-Option verwendet, um die inkrementellen Prozentprüfungen anzugeben. Wenn beispielsweise reject_sample_size 1000 ist, dann berechnet das Ladeprogramm den Prozentsatz von fehlerhaften Zeilen nach dem Ladeversuch von 1000 Zeilen. Nach jedem weiteren Ladeversuch von 1000 Zeilen wird der Prozentsatz von fehlerhaften Zeilen neu berechnet.
-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 Zeichenkette.
Beispiele:
' ' wird abgeschnitten zu ''
' abc ' wird abgeschnitten zu 'abc'
Wenn „-c“ mit „-E“ verwendet wird, erfolgt die „-E“-Operation zuerst. Felder, die nur Leerzeichen enthalten, werden in die leere Zeichenkette und nicht in NULL konvertiert.
-E
Konvertieren Sie leere Zeichenketten in NULL. Die Standardeinstellung besteht darin, diese Konvertierungen nicht auszuführen.
-m
Verwenden Sie den Modus Multi-Transaktion für die zweite Ladephase; beim Laden von Daten aus der Stagingtabelle in eine verteilte Tabelle.
Mit -m führt SQL Server PDW Ladevorgänge parallel durch und überträgt sie. Hierdurch ist die Leistung viel größer als beim Standardlademodus, ist jedoch nicht transaktionssicher.
Ohne -m führt SQL Server PDW serielle Lasten über die Verteilungen in jedem Compute-Knoten und gleichzeitig über die Compute-Knoten hinweg durch. Diese Methode ist langsamer als der Modus Multi-Transaktion, ist jedoch transaktionssicher.
-m ist optional für anfügen, neu laden und Upsert ausführen.
-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 keine Zurücksetzung mit dem Modus Multi-Transaktion. Dies bedeutet, dass die Wiederherstellung von einer fehlgeschlagenen oder abgebrochenen Last von Ihrem eigenen Ladevorgang behandelt werden muss.
Es wird empfohlen, -m nur beim Laden in eine leere Tabelle zu verwenden, damit Sie ohne Datenverlust Wiederherstellungen vornehmen 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 autoritativen Stelle verfügt. Verwenden Sie dieses, um sicherzustellen, dass Ihre Daten nicht von einem Angreifer gestohlen und an einen nicht autorisierten Ort gesendet werden. Das Zertifikat muss bereits auf der Anwendung installiert sein. Die einzige unterstützte Möglichkeit zum Installieren des Zertifikats ist für den Anwendungsadministrator, es mithilfe des Configuration Manager-Tools zu installieren. Fragen Sie den Anwendungsadministrator, wenn Sie nicht sicher sind, ob die Anwendung ü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. Verwendung 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, um den Rückgabecode anzuzeigen. Zum Beispiel:
dwloader
echo ReturnCode=%errorlevel%
if not %errorlevel%==0 echo Fail
if %errorlevel%==0 echo Success
Verwenden Sie $LastExitCode
bei Verwendung von PowerShell.
Berechtigungen
Erfordert LOAD-Berechtigung und entsprechende Berechtigungen (INSERT, UPDATE, DELETE) in der Zieltabelle. Erfordert eine CREATE-Berechtigung (zum Erstellen einer temporären Tabelle) in der Stagingdatenbank. Wenn keine Stagingdatenbank verwendet wird, ist für die Zieldatenbank eine 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 Anwendung 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 Ladeprogramms gleichzeitig ausführen. Die maximale Anzahl von Ladeprogramm-Instanzen ist vorkonfiguriert und kann nicht geändert werden.
Geladene Daten erfordern möglicherweise mehr oder weniger Speicherplatz bei der Anwendung als am Quellspeicherort. Sie können Testimporte mit Teilmengen von Daten durchführen, um den Datenträgerverbrauch zu schätzen.
Obwohl dwloader eine Transaktionsverarbeitung ist und im Falle eines Fehlers ordnungsgemäß zurückgesetzt wird, kann er nicht zurückgesetzt werden, sobald das Massenladen erfolgreich abgeschlossen wurde. Um einen aktiven Dwloader-Prozess 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 Zeichenkette sollte nicht als Trennzeichen verwendet werden. Wenn eine leere Zeichenkette 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 Zeichenfolgen-Trennzeichen wird die leere Zeichenfolge ignoriert, und das Standardverhalten wird angewendet.
Sperrverhalten
Das dwloader-Sperrverhalten variiert je nach load_mode_option.
append - Anfügen 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 lädt direkt in die endgültige Tabelle, wobei eine ExclusiveUpdate-Tabellensperre verwendet wird und der einzige Modus ist, der keine Stagingtabelle verwendet.
Neu Laden - „Neu Laden“ lädt 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 bei gleichzeitigen Vorgängen nicht empfohlen.
Upsert ausführen – „Upsert ausführen“ lädt Daten in eine Stagingtabelle und führt dann einen Zusammenführungsvorgang aus der Stagingtabelle in die endgültige Tabelle aus. „Upsert ausführen „erfordert keine exklusiven Sperren für die endgültige Tabelle. Die Leistung kann variieren, wenn Sie „Upsert ausführen“ verwenden. Testen Sie das Verhalten in Ihrer Testumgebung.
Sperrverhalten
Sperrung des Modus Anfügen
Anfügen kann im Multi-Transaktionsmodus ausgeführt werden (mit dem Argument -m), ist aber nicht transaktionssicher. Daher sollte „Anfügen“ als Transaktionsoperation verwendet werden (ohne das Argument „-m“ zu verwenden). Leider ist der Transaktionsmodus während der letzten INSERT-SELECT-Operation derzeit etwa sechsmal langsamer als der Multi-Transaktionsmodus.
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... SELECT WITH (TABLOCK)-Vorgang ausgeführt. Die folgende Tabelle zeigt das Sperrverhalten in der endgültigen Tabelle und das Protokollierungsverhalten bei Verwendung des Anfügemodus:
Tabellentyp | Multi-Transaktion Modus (-m) |
Die Tabelle ist leer | Unterstützte Gleichzeitigkeit | Logging |
---|---|---|---|---|
Heap | Ja | Ja | Ja | Mindestens |
Heap | Ja | Keine | Ja | Mindestens |
Heap | No | Ja | No | Mindestens |
Heap | No | Nr. | No | Mindestens |
Cl | Ja | Ja | No | Mindestens |
Cl | Ja | Keine | Ja | Vollständig |
Cl | No | Ja | No | Mindestens |
Cl | No | Nein | Ja | Vollständig |
Die obige Tabelle zeigt dwloader unter Verwendung des Anfügemodus, der in eine Heap- oder eine CI-Tabelle (gruppierter Index) geladen wird, mit oder ohne das Flag Multi-Transaktion bzw. 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 von der (2.) Phase mit dem Anfügemodus in einen gruppierten Index ohne multitransaktionalen Modus und in eine leere Tabelle PDW eine exklusive Sperre für die Tabelle erstellen, und die Protokollierung ist minimal. Dies bedeutet, dass ein Kunde nicht in der Lage ist, die (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 unter Verwendung von 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
Das gleiche Beispiel mit 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 Batch-Skripts, das Daten in AdventureWorksPDW2012 lädt. Um das vollständige Skript anzuzeigen, öffnen Sie die aw_create.bat Datei, die im AdventureWorksPDW2012-Installationspaket enthalten ist.
Der folgende Skript-Ausschnitt 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);
Im Folgenden finden Sie 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 gefolgt von der IP-Adresse des Steuerknotens.
-E gibt an, leere Zeichenketten als NULL zu laden.
-M reload gibt an, die Zieltabelle abzuschneiden, bevor die Quelldaten eingefügt werden.
-e UTF16 gibt an, dass die Quelldatei den Zeichencodierungstyp Little-Endian 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 an, dass die Zeilen, die nicht geladen werden können, in eine Datei namens DimAccount.bad geschrieben werden.
-t "|" gibt an, dass die Felder in der Eingabedatei, DimAccount.txt, durch das Pipe-Zeichen getrennt sind.
-r \r\n gibt an, dass jede Zeile in DimAccount.txt endet, mit einem Wagenrücklauf und einem Zeilenvorschubzeichen.
-U <login_name> -P <password> gibt die Anmeldedaten und das Passwort für die Anmeldung an, die über Berechtigungen zum Ausführen des Ladens verfügt.