Laden von Daten mit INSERT in Parallel Data Warehouse
Sie können die tsql INSERT-Anweisung verwenden, um Daten in eine verteilte oder replizierte TABELLE (SQL Server Parallel Data Warehouse, PDW) zu laden. Weitere Informationen zu INSERT finden Sie unter INSERT. Für replizierte Tabellen und alle Nichtverteilungsspalten in einer verteilten Tabelle verwendet PDW SQL Server, um die in der Anweisung angegebenen Datenwerte implizit in den Datentyp der Zielspalte zu konvertieren. Weitere Informationen zu SQL Server-Datenkonvertierungsregeln finden Sie unter Datentypkonvertierung für SQL. Bei Verteilungsspalten unterstützt PDW jedoch nur eine Teilmenge impliziter Konvertierungen, die SQL Server unterstützt. Wenn Sie daher die INSERT-Anweisung verwenden, um Daten in eine Verteilungsspalte zu laden, müssen die Quelldaten in einem der in den folgenden Tabellen definierten Formate angegeben werden.
Einfügen von Literalen in Binäre Typen
In der folgenden Tabelle werden die akzeptierten Literaltypen, Formate und Konvertierungsregeln zum Einfügen eines Literalwerts in eine Verteilungsspalte vom Typ "binär ( n)" oder "varbinary(n)" definiert.
Literaltyp | Format | Konvertierungsregeln |
---|---|---|
Binäres Literal | 0xhexidecimal_string Beispiel: 0x12Ef |
Binäre Literale müssen 0x vorangestellt werden. Die Länge der Datenquelle darf die Anzahl der für den Datentyp angegebenen Bytes nicht überschreiten. Wenn die Länge der Datenquelle kleiner als die Größe des binären Datentyps ist, werden die Daten rechts mit Nullen aufgefüllt, um die Größe des Datentyps zu erreichen. |
Einfügen von Literalen in Datums- und Uhrzeittypen
Datums- und Uhrzeitliterale werden mithilfe von Zeichenwerten in bestimmten Formaten dargestellt, die in einfache Anführungszeichen eingeschlossen sind. In den folgenden Tabellen werden die zulässigen Literaltypen, Format- und Konvertierungsregeln zum Einfügen eines Datums- oder Uhrzeitliterals in eine SQL Server-PDW-Verteilungsspalte vom Typ "datetime", "smalldatetime", "datetime", "time", "datetimeoffset" oder "datetime2" definiert.
Datetime-Datentyp
In der folgenden Tabelle werden die akzeptierten Formate und Regeln zum Einfügen von Literalwerten in eine Verteilungsspalte vom Typ "datetime" definiert. Eine leere Zeichenfolge ('' ) wird in den Standardwert '1900-01-01 12:00:00:00.000' konvertiert. Zeichenfolgen, die nur Leere (' ') enthalten, generieren einen Fehler.
Literaltyp | Format | Konvertierungsregeln |
---|---|---|
Zeichenfolgenliteral im Datetime-Format | "JJJJ-MM-DD hh:mm:ss[.nnn]" Beispiel: '2007-05-08 12:35:29.123' |
Fehlende Bruchzahlen werden beim Einfügen des Werts auf 0 festgelegt. Beispielsweise wird das Literal "2007-05-08 12:35" als "2007-05-08 12:35:00.000" eingefügt. |
Zeichenfolgenliteral im Smalldatetime-Format | "JJJJ-MM-TT hh:mm" Beispiel: '2007-05-08 12:35' |
Sekunden und verbleibende Bruchzahlen werden beim Einfügen des Werts auf 0 festgelegt. |
Zeichenfolgenliteral im Datumsformat | "JJJJ-MM-TT" Beispiel: '2007-05-08' |
Zeitwerte (Stunde, Minuten, Sekunden und Bruchzahlen) werden beim Einfügen des Werts auf 12:00:00:00,000 festgelegt. |
Zeichenfolgenliteral im Datetime2-Format | 'YYYY-MM-DD hh:mm:ss.nnnnnnnn' Beispiel: '2007-05-08 12:35:29.1234567' |
Die Quelldaten dürfen drei Bruchzahlen nicht überschreiten. Beispielsweise wird das Literal "2007-05-08 12:35:29.123" eingefügt, aber der Wert "2007-05-08 12:35:29.1234567" generiert einen Fehler. |
Smalldatetime-Datentyp
In der folgenden Tabelle werden die akzeptierten Formate und Regeln zum Einfügen von Literalwerten in eine Verteilungsspalte vom Typ "smalldatetime" definiert. Eine beliebige leere Zeichenfolge ('') wird in den Standardwert '1900-01-01 12:00' konvertiert. Zeichenfolgen, die nur Leere (' ') enthalten, generieren einen Fehler.
Literaltyp | Format | Konvertierungsregeln |
---|---|---|
Zeichenfolgenliteral im Smalldatetime-Format | "JJJJ-MM-TT hh:mm" oder "JJJJ-MM-TT hh:mm:00" Beispiel: '2007-05-08 12:00' oder '2007-05-08 12:00:00' |
Die Quelldaten müssen Werte für Jahr, Monat, Datum, Stunde und Minute aufweisen. Sekunden sind optional und müssen , falls vorhanden, auf den Wert 00 festgelegt werden. Jeder andere Wert generiert einen Fehler. |
Zeichenfolgenliteral im Datumsformat | "JJJJ-MM-TT" Beispiel: '2007-05-08' |
Zeitwerte (Stunde, Minuten, Sekunden und Bruchzahlen) werden beim Einfügen des Werts auf 0 festgelegt. |
Datumsdatentyp
In der folgenden Tabelle werden die akzeptierten Formate und Regeln zum Einfügen von Literalwerten in eine Verteilungsspalte vom Typ Datum definiert. Eine beliebige leere Zeichenfolge ('') wird in den Standardwert '1900-01-01' konvertiert. Zeichenfolgen, die nur Leere (' ') enthalten, generieren einen Fehler.
Literaltyp | Format | Konvertierungsregeln |
---|---|---|
Zeichenfolgenliteral im Datumsformat | "JJJJ-MM-TT" Beispiel: '2007-05-08' |
Dies ist das einzige akzeptierte Format. |
Time-Datentyp
In der folgenden Tabelle werden die akzeptierten Formate und Regeln zum Einfügen von Literalwerten in eine Verteilungsspalte vom Typ "Time" definiert. Eine leere Zeichenfolge ('') wird in den Standardwert '00:00:00.00.0000' konvertiert. Zeichenfolgen, die nur Leere (' ') enthalten, generieren einen Fehler.
Literaltyp | Format | Konvertierungsregeln |
---|---|---|
Zeichenfolgenliteral im Zeitformat | 'hh:mm:ss.nnnnnnn' Beispiel: '12:35:29.1234567' |
Wenn die Datenquelle eine kleinere oder gleiche Genauigkeit (Anzahl von Bruchstellen) als die Genauigkeit des Zeitdatentyps aufweist, werden die Daten mit Nullen auf der rechten Seite aufgefüllt. Beispielsweise wird ein Literalwert "12:35:29.123" als "12:35:29.1230000" eingefügt. Ein Wert mit einer größeren Genauigkeit als der Zieldatentyp wird abgelehnt. |
datetimeoffset-Datentyp
In der folgenden Tabelle werden die akzeptierten Formate und Regeln zum Einfügen von Literalwerten in eine Verteilungsspalte vom Typ Datetimeoffset (n) definiert. Das Standardformat lautet "JJJJ-MM-TT hh:mm:ss.nn {+|-}hh:mm". Eine leere Zeichenfolge ('' ) wird in den Standardwert '1900-01-01 12:00:00.00.000000 +00:00' konvertiert. Zeichenfolgen, die nur Leere (' ') enthalten, generieren einen Fehler. Die Anzahl der Dezimalstellen hängt von der Spaltendefinition ab. Beispielsweise weist eine Spalte, die als Datetimeoffset (2) definiert ist, zwei Bruchzahlen auf.
Literaltyp | Format | Konvertierungsregeln |
---|---|---|
Zeichenfolgenliteral im Datetime-Format | "JJJJ-MM-DD hh:mm:ss[.nnn]" Beispiel: '2007-05-08 12:35:29.123' |
Fehlende Bruchzahlen und Offsetwerte werden beim Einfügen des Werts auf 0 festgelegt. Beispielsweise wird das Literal "2007-05-08 12:35:29.123" als "2007-05-08 12:35:29.1230000 +00:00" eingefügt. |
Zeichenfolgenliteral im Smalldatetime-Format | "JJJJ-MM-TT hh:mm" Beispiel: '2007-05-08 12:35' |
Sekunden, verbleibende Bruchzahlen und Offsetwerte werden beim Einfügen des Werts auf 0 festgelegt. |
Zeichenfolgenliteral im Datumsformat | "JJJJ-MM-TT" Beispiel: '2007-05-08' |
Zeitwerte (Stunde, Minuten, Sekunden und Bruchzahlen) werden beim Einfügen des Werts auf 0 festgelegt. Beispielsweise wird das Literal "2007-05-08" als "2007-05-08 00:00:00.000000 +00:00:00" eingefügt. |
Zeichenfolgenliteral im Datetime2-Format | 'YYYY-MM-DD hh:mm:ss.nnnnnnnn' Beispiel: '2007-05-08 12:35:29.1234567' |
Die Quelldaten dürfen die angegebene Anzahl von Bruchzahlen in der Spalte "datetimeoffset" nicht überschreiten. Wenn die Datenquelle eine kleinere oder gleiche Anzahl von Bruch sekunden enthält, werden die Daten mit Nullen nach rechts aufgefüllt. Wenn der Datentyp beispielsweise datetimeoffset (5) ist, wird der Literalwert "2007-05-08 12:35:29.123 +12:15" als "12:35:29.12300 +12:15" eingefügt. |
Zeichenfolgenliteral im Datetimeoffset-Format | 'JJJJ-MM-DD hh:mm:ss.nnnnnnn {+|-} hh:mm' Beispiel: '2007-05-08 12:35:29.1234567 +12:15' |
Die Quelldaten dürfen die angegebene Anzahl von Bruchzahlen in der Spalte "datetimeoffset" nicht überschreiten. Wenn die Datenquelle eine kleinere oder gleiche Anzahl von Bruch sekunden enthält, werden die Daten mit Nullen nach rechts aufgefüllt. Wenn der Datentyp beispielsweise datetimeoffset (5) ist, wird der Literalwert "2007-05-08 12:35:29.123 +12:15" als "12:35:29.12300 +12:15" eingefügt. |
datetime2-Datentyp
In der folgenden Tabelle werden die akzeptierten Formate und Regeln zum Einfügen von Literalwerten in eine Verteilungsspalte vom Typ Datetime2 (n) definiert. Das Standardformat lautet "JJJJ-MM-DD hh:mm:ss.nnnnnnnn". Eine leere Zeichenfolge ('') wird in den Standardwert '1900-01-01 12:00:00' konvertiert. Zeichenfolgen, die nur Leere (' ') enthalten, generieren einen Fehler. Die Anzahl der Dezimalstellen hängt von der Spaltendefinition ab. Beispielsweise weist eine Spalte, die als "datetime2 " (2) definiert ist, zwei Bruchzahlen auf.
Literaltyp | Format | Konvertierungsregeln |
---|---|---|
Zeichenfolgenliteral im Datetime-Format | "JJJJ-MM-DD hh:mm:ss[.nnn]" Beispiel: '2007-05-08 12:35:29.123' |
Bruch sekunden sind optional und werden beim Einfügen des Werts auf 0 festgelegt. Ein Wert mit mehr Dezimalstellen als der Zieldatentyp wird abgelehnt. |
Zeichenfolgenliteral im Smalldatetime-Format | "JJJJ-MM-TT hh:mm" Beispiel: '2007-05-08 12' |
Optionale Sekunden und verbleibende Bruchziffern werden beim Einfügen des Werts auf 0 festgelegt. |
Zeichenfolgenliteral im Datumsformat | "JJJJ-MM-TT" Beispiel: '2007-05-08' |
Zeitwerte (Stunde, Minuten, Sekunden und Bruchzahlen) werden beim Einfügen des Werts auf 0 festgelegt. Beispielsweise wird das Literal "2007-05-08" als "2007-05-08 12:00:00.0000000" eingefügt. |
Zeichenfolgenliteral im Datetime2-Format | 'JJJJ-MM-DD hh:mm:ss:nnnnnnnn' Beispiel: '2007-05-08 12:35:29.1234567' |
Wenn die Datenquelle Daten und Zeitkomponenten enthält, die kleiner oder gleich dem in datetime2(n) angegebenen Wert sind, werden die Daten eingefügt. Andernfalls wird ein Fehler generiert. |
Einfügen von Literalen in numerische Typen
In den folgenden Tabellen werden die akzeptierten Formate und Konvertierungsregeln zum Einfügen eines Literalwerts in eine SQL Server-PDW-Verteilungsspalte definiert, die einen numerischen Typ verwendet.
bit-Datentyp
In der folgenden Tabelle werden die akzeptierten Formate und Regeln zum Einfügen von Literalwerten in eine Verteilungsspalte vom Typ Bit definiert. Eine leere Zeichenfolge (') oder eine Zeichenfolge, die nur Leere (' ') enthält, wird in 0 konvertiert.
Literaltyp | format | Konvertierungsregeln |
---|---|---|
Zeichenfolgenliteral im ganzzahligen Format | 'nnnnnnnnn' Beispiel: "1" oder "321" |
Ein ganzzahliger Wert, der als Zeichenfolgenliteral formatiert ist, darf keinen negativen Wert enthalten. Beispielsweise generiert der Wert "-123" einen Fehler. Ein Wert, der größer als 1 ist, wird in 1 konvertiert. Beispielsweise wird der Wert "123" in 1 konvertiert. |
Zeichenfolgenliteral | 'TRUE' oder 'FALSE' Beispiel: 'true' |
Der Wert "TRUE" wird in 1 konvertiert; der Wert 'FALSE' wird in 0 konvertiert. |
Ganzzahliges Literal | nnnnnnnnnn Beispiel: 1 oder 321 |
Ein Wert, der größer als 1 oder kleiner als 0 ist, wird in 1 konvertiert. Die Werte 123 und -123 werden beispielsweise in 1 konvertiert. |
Dezimalliteral | nnnnn.nnn Beispiel: 1234.5678 |
Ein Wert, der größer als 1 oder kleiner als 0 ist, wird in 1 konvertiert. Die Werte 123,45 und -123,45 werden beispielsweise in 1 konvertiert. |
decimal-Datentyp
In der folgenden Tabelle werden die akzeptierten Formate und Regeln zum Einfügen von Literalwerten in eine Verteilungsspalte vom Typ Decimal (p,s) definiert. Die Datenkonvertierungsregeln sind identisch mit SQL Server. Weitere Informationen finden Sie unter Datentypkonvertierung auf MSDN.
Literaltyp | Format |
---|---|
Zeichenfolgenliteral im ganzzahligen Format | 'nnnnnn' Beispiel: "321312313123" |
Zeichenfolgenliteral im Dezimalformat | 'nnnnnn.nnnnn' Beispiel: '123344.34455' |
Ganzzahliges Literal | nnnnn Beispiel: 321312313123 |
Dezimalliteral | nnnnnn.nnnn Beispiel: '123344.34455' |
Float- und reale Datentypen
In der folgenden Tabelle werden die akzeptierten Formate und Regeln zum Einfügen von Literalwerten in eine Verteilungsspalte vom Typ Float oder real definiert. Datenkonvertierungsregeln sind identisch mit SQL Server. Weitere Informationen finden Sie unter Datentypkonvertierung auf MSDN.
Literaltyp | Format |
---|---|
Zeichenfolgenliteral im ganzzahligen Format | 'nnnnnn' Beispiel: "321312313123" |
Zeichenfolgenliteral im Dezimalformat | 'nnnnnn.nnnnn' Beispiel: '123344.34455' |
Zeichenfolgenliteral im Gleitkommaformat | 'n.nnnnE+nn' Beispiel: '3.12323E+14' |
Ganzzahliges Literal | nnnnn Beispiel: 321312313123 |
Dezimalliteral | nnnnnn.nnnn Beispiel: 123344.34455 |
Gleitkommaliteral | n.nnnnNE+nnn Beispiel: 3.12323E+14 |
int, bigint, tinyint, smallint Datentypen
In der folgenden Tabelle werden die akzeptierten Formate und Regeln zum Einfügen von Literalwerten in eine Verteilungsspalte vom Typ "int", "bigint", "tinyint" oder "smallint" definiert. Die Datenquelle darf den zulässigen Bereich für den angegebenen Datentyp nicht überschreiten. Der Bereich für "tinyint " beträgt beispielsweise 0 bis 255, und der Bereich für "int " beträgt -2.147.483.648 bis 2.147.483.647.
Literaltyp | Format | Konvertierungsregeln |
---|---|---|
Zeichenfolgenliteral im ganzzahligen Format | 'nnnnnnnn' Beispiel: "321312313123" |
None |
Ganzzahliges Literal | nnnn Beispiel: 321312313123 |
None |
Dezimalliteral | nnnnnn.nnnn Beispiel: 123344.34455 |
Die Werte rechts neben dem Dezimalkomma werden abgeschnitten. |
Money- und Smallmoney-Datentypen
Geldliteralwerte werden als Zahlen mit einem optionalen Dezimalkomma und Währungssymbol als Präfix dargestellt. Die Datenquelle darf den zulässigen Bereich für den angegebenen Datentyp nicht überschreiten. Beispielsweise beträgt der Bereich für Smallmoney -214,748,3648 bis 214.748,3647 und der Bereich für Geld -922,337.203.685.477.5808 bis 922.337.203.685.477.5807. In der folgenden Tabelle werden die akzeptierten Formate und Regeln zum Einfügen von Literalwerten in eine Verteilungsspalte vom Typ "Geld " oder "Smallmoney" definiert.
Literaltyp | Format | Konvertierungsregeln |
---|---|---|
Zeichenfolgenliteral im ganzzahligen Format | 'nnnnnnnnn' Beispiel: "123433" |
Fehlende Ziffern nach dem Dezimalkomma werden beim Einfügen des Werts auf 0 festgelegt. Beispielsweise wird das Literal "12345" als 12345.0000 eingefügt. |
Zeichenfolgenliteral im Dezimalformat | 'nnnnnn.nnnnn' Beispiel: '123344.34455' |
Wenn die Anzahl der Ziffern nach dem Dezimalkomma 4 überschreitet, wird der Wert auf den nächsten Wert aufgerundet. Beispielsweise wird der Wert "123344,34455" als 123344,3446 eingefügt. |
Zeichenfolgenliteral im Geldformat | '$nnnnnn.nnnn' Beispiel: '$123456.7890' |
Das optionale Währungssymbol wird nicht mit dem Wert eingefügt. Wenn die Anzahl der Ziffern nach dem Dezimalkomma 4 überschreitet, wird der Wert auf den nächsten Wert aufgerundet. |
Ganzzahliges Literal | nnnnnnnnnn Beispiel: 123433 |
Fehlende Ziffern nach dem Dezimalkomma werden beim Einfügen des Werts auf 0 festgelegt. Beispielsweise wird das Literal 12345 als 12345.0000 eingefügt. |
Dezimalliteral | nnnnnn.nnnn Beispiel: 123344.34455 |
Wenn die Anzahl der Ziffern nach dem Dezimalkomma 4 überschreitet, wird der Wert auf den nächsten Wert aufgerundet. Beispielsweise wird der Wert 123344,34455 als 123344,3446 eingefügt. |
Geldliteral | $nnnnnn.nnnn Beispiel: $123456,7890 |
Das optionale Währungssymbol wird nicht mit dem Wert eingefügt. Wenn die Anzahl der Ziffern nach dem Dezimalkomma 4 überschreitet, wird der Wert auf den nächsten Wert aufgerundet. |
Einfügen von Literalen in Zeichenfolgentypen
In den folgenden Tabellen werden die akzeptierten Formate und Konvertierungsregeln zum Einfügen eines Literalwerts in eine SQL Server-PDW-Spalte definiert, die einen Zeichenfolgentyp verwendet.
Char-, Varchar-, nchar- und nvarchar-Datentypen
In der folgenden Tabelle werden die akzeptierten Formate und Regeln zum Einfügen von Literalwerten in eine Verteilungsspalte vom Typ Char, varchar, nchar und nvarchar definiert. Die Länge der Datenquelle darf die für den Datentyp angegebene Größe nicht überschreiten. Wenn die Länge der Datenquelle kleiner als die Größe des Datentyps "Zeichen" oder "nchar " ist, werden die Daten rechts mit leeren Leerzeichen aufgefüllt, um die Größe des Datentyps zu erreichen.
Literaltyp | Format | Konvertierungsregeln |
---|---|---|
Zeichenfolgenliteral | Format: 'Zeichenzeichenfolge' Beispiel: 'abc' |
None |
Unicode-Zeichenfolgenliteral | Format: N'Zeichenzeichenfolge' Beispiel: N'abc' |
None |
Ganzzahliges Literal | Format: nnnnnnn Beispiel: 321312313123 |
None |
Dezimalliteral | Format: nnnnnn.nnnnnnn Beispiel: 12344.34455 |
None |
Geldliteral | Format: $nnnnnn.nnnnn Beispiel: $123456,99 |
Das Währungssymbol wird nicht mit dem Wert eingefügt. Um das Währungssymbol einzufügen, fügen Sie den Wert als Zeichenfolgenliteral ein. Dies entspricht dem Format des Dwloader-Tools , das jedes Literal als Zeichenfolgenliteral behandelt. Kommas sind nicht zulässig. Wenn die Anzahl der Ziffern nach dem Dezimalkomma 2 überschreitet, wird der Wert auf den nächsten Wert aufgerundet. Beispielsweise wird der Wert 123,946789 als 123,95 eingefügt. Nur die Standardformatvorlage 0 (keine Kommas und 2 Ziffern nach dem Dezimalkomma) ist zulässig, wenn sie die CONVERT-Funktion zum Einfügen von Geldliteralen verwenden. |