Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
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 (Reload-Modus).
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 Optionen bei Ladefehlern 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 der Ladevorgang nach der ersten Zurückweisung abgebrochen, es sei denn, Sie geben einen anderen Schwellenwert für Zurückweisungen 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 Hilfsinformationen zur Verwendung des Loaders 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.
-P<Kennwort>
Das Passwort für eine SQL Server-Authentifizierung login_name.
-W
Windows-Authentifizierung verwenden. (Kein login_name oder Passwort erforderlich.)
-fparameter_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
-Starget_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.
-Ttarget_database_name.[schema].table_name
Der dreiteilige Name für die Zieltabelle.
-Isource_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. Siehe die -e-Option.
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 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.
-fhnumber_header_rows
Die Anzahl der Zeilen (Reihen), die am Anfang von source_data_file_name ignoriert werden sollen. Der Standardwert ist 0.
<Optionen_für_Feldvariablenlänge>
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.
-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 Little-Endian ist und UTF16BE big endian ist. Bei diesen Optionen wird keine Groß-/Kleinschreibung berücksichtigt.
-tfield_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 '~|~'
-rZeilentrennzeichen
Das Trennzeichen für jede Zeile der Quelldatendatei. Das Zeilentrennzeichen ist ein oder mehrere ASCII-Werte.
Um ein Wagenrücklaufzeichen (CR), ein Zeilenvorschubzeichen (LF) oder ein Tabulatorzeichen als Trennzeichen anzugeben, 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.
-sstring_delimiter
Das Trennzeichen für ein Feld vom Datentyp Zeichenkette in einer durch Texttrennzeichen getrennten 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
< Optionen für Spalten fester Breite>
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=Anzahl_zeichen
Column_name=Anzahl_zeichen
Beispiel für eine Konfigurationsdatei mit fester Satzbreite:
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 zur Behandlung von führenden und nachfolgenden Leerzeichen oder zur Datentypkonvertierung im Modus mit fester Feldbreite 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 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.
-rZeilentrennzeichen
Das Trennzeichen für jede Zeile der Quelldatendatei. Das Zeilentrennzeichen ist ein oder mehrere ASCII-Werte.
Um ein Wagenrücklaufzeichen (CR), ein Zeilenvorschubzeichen (LF) oder ein Tabulatorzeichen als Trennzeichen anzugeben, 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 Sie für beide Datumsformate ydm und dmy in der Eingabedatei 2013-02-03 oder 02-03-2013 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.
mdy
mdy steht für <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.
-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 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
-dstaging_database_name
Der Name der Datenbank, die die Staging-Tabelle enthalten wird. 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 angehängt, aktualisiert oder eingefügt oder neu geladen werden sollen. Der Standardmodus wird angefügt.
anhängen
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 für mehrere Transaktionen (-m). Bei Verwendung von fastappend kann keine Stagingdatenbank angegeben werden. Mit fastappend gibt es kein Rollback, was bedeutet, dass die Wiederherstellung nach einem fehlgeschlagenen oder abgebrochenen Ladevorgang von Ihrem eigenen Ladeprozess übernommen 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 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.
Neu laden
Das Ladeprogramm schneidet die Zieltabelle ab, bevor die Quelldaten eingefügt werden.
-bBatchgröße
Die Verwendung von batchsize wird nur für den Microsoft-Support empfohlen; hierbei handelt es sich um die SQL Server-Batchgröße für den Massenkopiervorgang, den DMS in SQL Server-Instanzen auf den Computeknoten durchfü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 Steuerungsknoten standardmäßig für jeden Ladevorgang dynamisch eine Batchgröße. 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.
<Ablehnungsoptionen>
Gibt Optionen zum Bestimmen der Anzahl von Ladefehlern an, die vom Ladeprogramm zugelassen werden. Wenn die Ladefehler den Schwellenwert überschreiten, wird der Ladevorgang gestoppt und es werden keine Zeilen übernommen.
-rt { Wert | Prozent }
Gibt an, ob -reject_value in der Option -rvreject_value eine feste Anzahl 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 fehlschlagen und 75 erfolgreich sind, 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 Standard reject_value ist 0.
Wird das Ladeprogramm mit dem Wert -rt verwendet, stoppt es den Ladevorgang, wenn die Anzahl der abgelehnten Zeilen reject_value überschreitet.
Bei Verwendung der Option „-rt“ zur Prozentberechnung berechnet der Loader den Prozentsatz in Intervallen (Option „-rs“). Daher kann der Prozentsatz der fehlgeschlagenen Zeilen reject_value überschreiten.
-rsreject_sample_size
Wird mit der -rt percentage-Option verwendet, um die prozentualen Prüfintervalle 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 Leerraumzeichen auf 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 zu '' gekürzt
' abc ' wird zu 'abc' gekürzt
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 für die zweite Phase des Ladevorgangs den Mehrtransaktionsmodus, wenn Sie Daten aus der Stagingtabelle in eine verteilte Tabelle laden.
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 Ladevorgänge innerhalb der Verteilungen jedes Compute-Knotens seriell aus und committet sie, während dies über die Compute-Knoten hinweg gleichzeitig erfolgt. Diese Methode ist langsamer als der Modus Multi-Transaktion, ist jedoch transaktionssicher.
-m ist bei append, reload und upsert optional.
-m ist für fastappend erforderlich.
-m kann nicht mit replizierten Tabellen verwendet werden.
-m gilt nur für die zweite Ladephase. Dies gilt nicht für die erste Ladephase, also das Laden von Daten in die Stagingtabelle.
Im Multi-Transaction-Modus gibt es kein Rollback, d. h., die Wiederherstellung nach einem fehlgeschlagenen oder abgebrochenen Ladevorgang muss von Ihrem eigenen Ladeprozess übernommen werden.
Es wird empfohlen, -m nur beim Laden in eine leere Tabelle zu verwenden, damit Sie ohne Datenverlust Wiederherstellungen vornehmen können. So beheben Sie einen Ladefehler: Löschen Sie die Zieltabelle, beheben Sie das Ladeproblem, erstellen Sie die Zieltabelle erneut, und führen Sie den 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 Konfigurations-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 anwendbare 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 den Loader von seinem Installationsort 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 Loaders gleichzeitig ausführen. Die maximale Anzahl von Ladeprogramm-Instanzen ist vorkonfiguriert und kann nicht geändert werden.
Geladene Daten erfordern möglicherweise auf der Appliance mehr oder weniger Speicherplatz als am Quellspeicherort. Sie können Testimporte mit Teilmengen von Daten durchführen, um den Datenträgerverbrauch zu schätzen.
Obwohl dwloader ein Transaktionsprozess ist und im Fehlerfall ordnungsgemäß zurückgerollt wird, kann der Vorgang nicht mehr zurückgerollt werden, sobald der Bulk-Ladevorgang erfolgreich abgeschlossen wurde. Um einen aktiven Dwloader-Prozess abzubrechen, geben Sie STRG+C ein.
Beschränkungen und 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. Wenn es als Spaltentrennzeichen verwendet wird, ignoriert der Ladevorgang das Trennzeichen und verwendet weiterhin den Standardwert „|“ 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 Anhängen – Schnelles Anhängen lädt direkt in die Zieltabelle unter Verwendung einer ExclusiveUpdate-Tabellensperre und ist der einzige Modus, der keine Staging-Tabelle verwendet.
Neu laden – Neu laden lädt Daten in eine Staging-Tabelle und erfordert eine exklusive Sperre sowohl für die Staging-Tabelle als auch für die Zieltabelle. Das Erneute Laden wird bei gleichzeitigen Vorgängen nicht empfohlen.
upsert – Upsert lädt Daten in eine Stagingtabelle und führt anschließend einen Merge-Vorgang von der Stagingtabelle in die Zieltabelle aus. Upsert erfordert keine exklusiven Sperren auf der Zieltabelle. Die Leistung kann bei der Verwendung von Upsert variieren. 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 des letzten INSERTSELECT-Vorgangs etwa sechsmal langsamer als der Multitransaktionsmodus.
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. Die zweite Phase führt eine INSERT INTO...SELECT WITH (TABLOCK)-Operation aus. Die folgende Tabelle zeigt das Sperrverhalten in der endgültigen Tabelle und das Protokollierungsverhalten bei Verwendung des Anfügemodus:
| Tabellentyp | Mehrfachtransaktion Modus (-m) |
Die Tabelle ist leer | Unterstützte Gleichzeitigkeit | Protokollierung |
|---|---|---|---|---|
| Heap | Ja | Ja | Ja | Mindestens |
| Heap | Ja | Keine | Ja | Mindestens |
| Heap | Keine | Ja | Keine | Mindestens |
| Heap | Keine | Keine | Keine | Mindestens |
| Cl | Ja | Ja | Keine | Mindestens |
| Cl | Ja | Keine | Ja | Vollständig |
| Cl | Keine | Ja | Keine | Mindestens |
| Cl | Keine | Keine | Ja | Vollständig |
Die obige Tabelle zeigt dwloader beim Laden im Anfügemodus in eine Heap- oder Clustered-Index-(CI-)Tabelle, mit oder ohne Multi-Transactional-Flag, sowie beim Laden in eine leere oder eine nicht leere Tabelle. Das Sperr- und Protokollierungsverhalten jeder solchen Lastkombination wird in der Tabelle angezeigt. Beispielsweise erstellt PDW beim Laden in der zweiten Phase im Anfügemodus in einen clustered Index ohne multitransaktionalen Modus und in eine leere Tabelle eine exklusive Sperre für die Tabelle, und es wird nur minimal protokolliert. Dies bedeutet, dass ein Kunde die zweite Phase nicht laden und gleichzeitig Abfragen für eine leere Tabelle ausführen kann. Beim Laden mit derselben Konfiguration in eine nicht leere Tabelle setzt PDW jedoch keine exklusive Sperre für die Tabelle, und gleichzeitiger Zugriff ist möglich. Leider wird vollständig protokolliert, was den Vorgang verlangsamt.
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=<password>
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 mit einem Wagenrücklauf- und einem Zeilenvorschubzeichen endet.
-U <login_name> -P <password> gibt den Loginnamen und das Passwort für den Login an, der über die Berechtigungen zum Durchführen des Ladevorgangs verfügt.