Freigeben über


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.

Weitere Informationen

Verteilte Daten
INSERT