Caricare dati con INSERT in Parallel Data Warehouse
È possibile utilizzare l'istruzione tsql INSERT per caricare i dati in una tabella distribuita o replicata di SQL Server Parallel Data Warehouse (PDW). Per ulteriori informazioni su INSERT, vedere INSERT. Per le tabelle replicate e tutte le colonne non di distribuzione in una tabella distribuita, PDW usa SQL Server per convertire in modo implicito i valori di dati specificati nell'istruzione nel tipo di dati della colonna di destinazione. Per altre informazioni sulle regole di conversione dei dati di SQL Server, vedere Conversione dei tipi di dati per SQL. Tuttavia, per le colonne di distribuzione, PDW supporta solo un sottoinsieme delle conversioni implicite supportate da SQL Server. Pertanto, quando si utilizza l'istruzione INSERT per caricare i dati in una colonna di distribuzione, i dati di origine devono essere specificati in uno dei formati definiti nelle tabelle seguenti.
Inserire valori letterali in tipi binari
La tabella seguente definisce i tipi letterali accettati, il formato e le regole di conversione per l'inserimento di un valore letterale in una colonna di distribuzione di tipo binario (n) o varbinary(n).
Tipo di valore letterale | Formato | Regole di conversione |
---|---|---|
Valori letterali binari | 0xhexidecimal_string Esempio: 0x12Ef |
I valori letterali binari devono essere preceduti dal prefisso 0x. La lunghezza dell'origine dati non può superare il numero di byte specificati per il tipo di dati. Se la lunghezza dell'origine dati è minore delle dimensioni del tipo di dati binario, i dati vengono completati a destra con zeri per raggiungere le dimensioni del tipo di dati. |
Inserire valori letterali in tipi di data e ora
I valori letterali di data e ora vengono rappresentati utilizzando valori di caratteri in formati specifici, racchiusi tra virgolette singole. Le tabelle seguenti definiscono i tipi letterali, il formato e le regole di conversione consentiti per l'inserimento di un valore letterale data o ora in una colonna di distribuzione SQL Server PDW di tipo datetime, smalldatetime, date, time, datetimeoffset o datetime2.
Tipi di dati datetime
Nella tabella seguente vengono definiti i formati accettati e le regole per l'inserimento di valori letterali in una colonna di distribuzione di tipo datetime. Qualsiasi stringa vuota ('') viene convertita nel valore predefinito '1900-01-01 12:00:00.000'. Le stringhe che contengono solo spazi vuoti (' ') generano un errore.
Tipo di valore letterale | Formato | Regole di conversione |
---|---|---|
Stringa di valore letterale nel formato datetime | 'AAAA-MM-GG hh:mm:ss[.nnn]' Esempio: '2007-05-08 12:35:29.123' |
Le cifre frazionarie mancanti vengono impostate su 0 quando viene inserito il valore. Ad esempio, il valore letterale '2007-05-08 12:35' viene inserito come '2007-05-08 12:35:00.000'. |
Stringa di valore letterale nel formato smalldatetime | 'AAAA-MM-GG hh:mm' Esempio: '2007-05-08 12:35' |
I secondi e le cifre frazionarie rimanenti vengono impostati su 0 quando viene inserito il valore. |
Stringa di valore letterale nel formato data | 'AAAA-MM-GG' Esempio: '2007-05-08' |
I valori di tempo (ora, minuti, secondi e frazioni) vengono impostati su 12:00:00.000 quando viene inserito il valore. |
Stringa di valore letterale nel formato datetime2 | 'AAAA-MM-GG hh:mm:ss.nnnnnnn' Esempio: '2007-05-08 12:35:29.1234567' |
I dati di origine non possono superare tre cifre frazionarie. Ad esempio, il valore letterale '2007-05-08 12:35:29.123' verrà inserito, ma il valore '2007-05-08 12:35:29.1234567' genera un errore. |
Tipo di dati smalldatetime
Nella tabella seguente vengono definiti i formati accettati e le regole per l'inserimento di valori letterali in una colonna di distribuzione di tipo smalldatetime. Qualsiasi stringa vuota ('') viene convertita nel valore predefinito '1900-01-01 12:00'. Le stringhe che contengono solo spazi vuoti (' ') generano un errore.
Tipo di valore letterale | Formato | Regole di conversione |
---|---|---|
Stringa di valore letterale nel formato smalldatetime | 'AAAA-MM-GG hh:mm' o 'AAAA-MM-GG hh:mm:00' Esempio: '2007-05-08 12:00' or '2007-05-08 12:00:00' |
I dati di origine devono avere valori per anno, mese, data, ora e minuto. I secondi sono opzionali e, quando presenti, devono essere impostati sul valore 00. Qualsiasi altro valore genera un codice di errore. |
Stringa di valore letterale nel formato data | 'AAAA-MM-GG' Esempio: '2007-05-08' |
I valori di tempo (ora, minuti, secondi e frazioni) vengono impostati su 0 quando il valore viene inserito. |
Tipo di dati Data
La tabella seguente definisce i formati accettati e le regole per l'inserimento di valori letterali in una colonna di distribuzione di tipo data. Qualsiasi stringa vuota ('') viene convertita nel valore predefinito '1900-01-01'. Le stringhe che contengono solo spazi vuoti (' ') generano un errore.
Tipo di valore letterale | Formato | Regole di conversione |
---|---|---|
Stringa di valore letterale nel formato data | 'AAAA-MM-GG' Esempio: '2007-05-08' |
Questo è l'unico formato accettato. |
Dati di tipo Tempo
La tabella seguente definisce i formati accettati e le regole per l'inserimento di valori letterali in una colonna di distribuzione di tipo tempo. Qualsiasi stringa vuota ('') viene convertita nel valore predefinito '00:00:00.0000'. Le stringhe che contengono solo spazi vuoti (' ') generano un errore.
Tipo di valore letterale | Formato | Regole di conversione |
---|---|---|
Stringa di valore letterale nel formato ora | 'hh:mm:ss.nnnnnnn' Esempio: '12:35:29.1234567' |
Se l'origine dati ha una precisione minore o uguale (numero di cifre frazionarie) rispetto alla precisione del tipo di dati tempo, i dati vengono riempiti a destra con zeri. Ad esempio, un valore letterale '12:35:29.123' viene inserito come '12:35:29.1230000'. Un valore con una precisione maggiore rispetto al tipo di dati di destinazione viene rifiutato. |
Tipo di dati datetimeoffset
La tabella seguente definisce i formati e le regole accettati per l'inserimento di valori letterali in una colonna di distribuzione di tipo datetimeoffset (n). Il formato predefinito è 'AAAA-MM-GG hh:mm:ss.nnnnnnn {+|-}hh:mm'. Una stringa vuota ('') viene convertita nel valore predefinito '1900-01-01 12:00:00.0000000 +00:00'. Le stringhe che contengono solo spazi vuoti (' ') generano un errore. Il numero di cifre frazionarie dipende dalla definizione di colonna. Ad esempio, una colonna definita come datetimeoffset (2) avrà due cifre frazionarie.
Tipo di valore letterale | Formato | Regole di conversione |
---|---|---|
Stringa di valore letterale nel formato datetime | AAAA-MM-GG hh:mm:ss[.nnn]' Esempio: '2007-05-08 12:35:29.123' |
Le cifre frazionarie e i valori di offset mancanti vengono impostati su 0 quando viene inserito il valore. Ad esempio, il valore letterale '2007-05-08 12:35:29.123' viene inserito come '2007-05-08 12:35:29.1230000 +00:00'. |
Stringa di valore letterale nel formato smalldatetime | 'AAAA-MM-GG hh:mm' Esempio: '2007-05-08 12:35' |
I secondi, le cifre frazionarie rimanenti e i valori di offset vengono impostati su 0 quando viene inserito il valore. |
Stringa di valore letterale nel formato data | 'AAAA-MM-GG' Esempio: '2007-05-08' |
I valori di tempo (ora, minuti, secondi e frazioni) vengono impostati su 0 quando il valore viene inserito. Ad esempio, il valore letterale '2007-05-08' viene inserito come '2007-05-08 00:00:00.0000000 +00:00'. |
Stringa di valore letterale nel formato datetime2 | AAAA-MM-GG hh:mm:ss.nnnnnnn' Esempio: '2007-05-08 12:35:29.1234567' |
I dati di origine non possono superare il numero specificato di secondi frazionari nella colonna datetimeoffset. Se l'origine dati ha un numero minore o uguale di secondi frazionari, i dati vengono riempiti a destra con zeri. Ad esempio, se il tipo di dati è datetimeoffset (5), il valore letterale '2007-05-08 12:35:29.123 +12:15' viene inserito come '12:35:29.12300 +12:15'. |
Stringa di valore letterale nel formato datetimeoffset | 'YYYY-MM-DD hh:mm:ss.nnnnnnn {+|-} hh:mm' Esempio: '2007-05-08 12:35:29.1234567 +12:15' |
I dati di origine non possono superare il numero specificato di secondi frazionari nella colonna datetimeoffset. Se l'origine dati ha un numero minore o uguale di secondi frazionari, i dati vengono riempiti a destra con zeri. Ad esempio, se il tipo di dati è datetimeoffset (5), il valore letterale '2007-05-08 12:35:29.123 +12:15' viene inserito come '12:35:29.12300 +12:15'. |
Tipi di dati datetime2
La tabella seguente definisce i formati e le regole accettati per l'inserimento di valori letterali in una colonna di distribuzione di tipo datetime2 (n). Il formato predefinito è 'AAAA-MM-GG hh:mm:ss.nnnnnnn'. Una stringa vuota ('') viene convertita nel valore predefinito '1900-01-01 12:00:00'. Le stringhe che contengono solo spazi vuoti (' ') generano un errore. Il numero di cifre frazionarie dipende dalla definizione di colonna. Ad esempio, una colonna definita come datetime2 (2) avrà due cifre frazionarie.
Tipo di valore letterale | Formato | Regole di conversione |
---|---|---|
Stringa di valore letterale nel formato datetime | 'AAAA-MM-GG hh:mm:ss[.nnn]' Esempio: '2007-05-08 12:35:29.123' |
I secondi frazionari sono opzionali e vengono impostati su 0 quando viene inserito il valore. Un valore con più cifre frazionarie rispetto al tipo di dati di destinazione è rifiutato. |
Stringa di valore letterale nel formato smalldatetime | 'AAAA-MM-GG hh:mm' Esempio: '2007-05-08 12' |
I secondi opzionali e le cifre frazionarie rimanenti vengono impostati su 0 quando viene inserito il valore. |
Stringa di valore letterale nel formato data | 'AAAA-MM-GG' Esempio: '2007-05-08' |
I valori di tempo (ora, minuti, secondi e frazioni) vengono impostati su 0 quando il valore viene inserito. Ad esempio, il valore letterale '2007-05-08' viene inserito come '2007-05-08 12:00:00.0000000'. |
Stringa di valore letterale nel formato datetime2 | 'AAAA-MM-GG hh:mm:ss[.nnnnnnn]' Esempio: '2007-05-08 12:35:29.1234567' |
Se l'origine dati contiene componenti di dati e orari minori o uguali al valore specificato in datetime2(n), i dati vengono inseriti; in caso contrario, viene generato un errore. |
Inserire valori letterali in tipi numerici
Le tabelle seguenti definiscono i formati accettati e le regole di conversione per l'inserimento di un valore letterale in una colonna di distribuzione SQL Server PDW che usa un tipo numerico.
bit - tipo di dati
Nella tabella seguente vengono definiti i formati accettati e le regole per l'inserimento di valori letterali in una colonna di distribuzione di tipo bit. Una stringa vuota ('') o una stringa che contiene solo spazi vuoti (' ') viene convertita in 0.
Tipo di valore letterale | format | Regole di conversione |
---|---|---|
Stringa di valore letterale nel formato integer | 'nnnnnnnnnn' Esempio: '1' o '321' |
Un valore intero formattato come stringa di valore letterale non può contenere un valore negativo. Ad esempio, il valore '-123' genera un errore. Un valore maggiore di 1 viene convertito in 1. Ad esempio, il valore '123' viene convertito in 1. |
Stringa di valore letterale | 'VERO' o 'FALSO' Esempio: 'vero' |
Il valore 'VERO' viene convertito in 1 e 'FALSO' viene convertito in 0. |
Valore letterale intero | nnnnnnnnnn Esempio: 1 o 321 |
Un valore maggiore di 1 o minore di 0 viene convertito in 1. Ad esempio, i valori 123 e -123 sono convertiti in 1. |
Valore letterale decimale | nnnnn.nnnn Esempio: 1234.5678 |
Un valore maggiore di 1 o minore di 0 viene convertito in 1. Ad esempio, i valori 123.45 e -123.45 vengono convertiti in 1. |
decimal - tipo di dati
La tabella seguente definisce i formati e le regole accettati per l'inserimento di valori letterali in una colonna di distribuzione di tipo decimal (p,s). Le regole di conversione dei dati sono uguali come per SQL Server. Per altre informazioni vedere Conversioni di tipi di dati su MSDN.
Tipo di valore letterale | Formato |
---|---|
Stringa di valore letterale nel formato integer | 'nnnnnnnnnnnn' Esempio: '321312313123' |
Stringa di valore letterale nel formato decimale | nnnnnn.nnnnn Esempio: '123344.34455' |
Valore letterale intero | nnnnnnnnnn Esempio: 321312313123 |
Valore letterale decimale | nnnnnn.nnnnn Esempio: '123344.34455' |
tipi di dati float e reali
Nella tabella seguente vengono definiti i formati accettati e le regole per l'inserimento di valori letterali in una colonna di distribuzione di tipo float o real. Le regole di conversione dei dati sono uguali come per SQL Server. Per altre informazioni vedere Conversioni di tipi di dati su MSDN.
Tipo di valore letterale | Formato |
---|---|
Stringa di valore letterale nel formato integer | 'nnnnnnnnnnnn' Esempio: '321312313123' |
Stringa di valore letterale nel formato decimale | nnnnnn.nnnnn Esempio: '123344.34455' |
Stringa di valore letterale nel formato virgola mobile | 'n.nnnnnE+nn' Esempio: '3.12323E+14' |
Valore letterale intero | nnnnnnnnnn Esempio: 321312313123 |
Valore letterale decimale | nnnnnn.nnnnn Esempio: 123344.34455 |
Valori letterali a virgola mobile | n.nnnnnE+nn Esempio: 3.12323E+14 |
tipi di dati int, bigint, tinyint, smallint
La tabella seguente definisce i formati accettati e le regole per l'inserimento di valori letterali in una colonna di distribuzione di tipo int, bigint, tinyint, or smallint. L'origine dati non può superare l'intervallo consentito per il tipo di dati specificato. Ad esempio, l'intervallo per tinyint è compreso tra 0 e 255 e l'intervallo per int è compreso tra -2,147,483,648 to 2,147,483,647.
Tipo di valore letterale | Formato | Regole di conversione |
---|---|---|
Stringa di valore letterale nel formato integer | 'nnnnnnnnnnnnnn' Esempio: '321312313123' |
None |
Valore letterale intero | nnnnnnnnnnnnnn Esempio: 321312313123 |
None |
Valore letterale decimale | nnnnnn.nnnnn Esempio: 123344.34455 |
I valori a destra del separatore decimale vengono troncati. |
Tipi di dati money e smallmoney
I valori letterali del denaro sono rappresentati come numeri con un punto decimale opzionale e un simbolo di valuta come prefisso. L'origine dati non può superare l'intervallo consentito per il tipo di dati specificato. Ad esempio, l'intervallo per smallmoney è compreso tra -214.748,3648 e 214.748,3647 e l'intervallo per money è compreso tra -922.337.203.685.477,5808 e 922.337.203.685.477,5807. La tabella seguente definisce i formati accettati e le regole per l'inserimento di valori letterali in una colonna di distribuzione di tipo money o smallmoney.
Tipo di valore letterale | Formato | Regole di conversione |
---|---|---|
Stringa di valore letterale nel formato integer | 'nnnnnnnn' Esempio: '123433' |
Cifre mancanti dopo il separatore decimale sono impostate su 0 quando viene inserito il valore. Ad esempio, il valore letterale '12345' viene inserito come 12345.0000. |
Stringa di valore letterale nel formato decimale | nnnnnn.nnnnn Esempio: '123344.34455' |
Se il numero di cifre dopo il separatore decimale supera 4, il valore viene arrotondato fino al valore più vicino. Ad esempio, il valore '123344.34455' viene inserito come 123344.3446. |
Stringa di valore letterale nel formato money | '$nnnnnn.nnnn' Esempio: '$123456,7890' |
Il simbolo di valuta opzionale non viene inserito con il valore. Se il numero di cifre dopo il separatore decimale supera 4, il valore viene arrotondato fino al valore più vicino. |
Valore letterale intero | nnnnnnnnnn Esempio: 123433 |
Cifre mancanti dopo il separatore decimale sono impostate su 0 quando viene inserito il valore. Ad esempio, il valore letterale 12345 viene inserito come 12345.0000. |
Valore letterale decimale | nnnnnn.nnnnn Esempio: 123344.34455 |
Se il numero di cifre dopo il separatore decimale supera 4, il valore viene arrotondato fino al valore più vicino. Ad esempio, il valore 123344.34455 viene inserito come 123344.3446. |
Valore letterale money | $nnnnnn.nnnn Esempio: $123456,7890 |
Il simbolo di valuta opzionale non viene inserito con il valore. Se il numero di cifre dopo il separatore decimale supera 4, il valore viene arrotondato fino al valore più vicino. |
Inserimento di valori letterali in tipi stringa
Le tabelle seguenti definiscono i formati accettati e le regole di conversione per l'inserimento di un valore letterale in una colonna SQL Server PDW che usa un tipo stringa.
tipi di dati char, varchar, nchar e nvarchar
La tabella seguente definisce i formati e le regole accettati per l'inserimento di valori letterali in una colonna di distribuzione di tipo char, varchar, nchar e nvarchar. La lunghezza dell'origine dati non può superare le dimensioni specificate per il tipo di dati. Se la lunghezza dell'origine dati è minore delle dimensioni del tipo di dati char o nchar, i dati vengono riempiti a destra con spazi vuoti per raggiungere le dimensioni del tipo di dati.
Tipo di valore letterale | Formato | Regole di conversione |
---|---|---|
Stringa di valore letterale | Formato: 'stringa di caratteri' Esempio: 'abc' |
None |
Stringa di valore letterale Unicode | Formato: stringa N'character' Esempio: N'abc' |
None |
Valore letterale intero | Formato: nnnnnnnnnnn Esempio: 321312313123 |
None |
Valore letterale decimale | Formato: nnnnnn.nnnnnnn Esempio: 12344.34455 |
None |
Valore letterale money | Formato: $nnnnnn.nnnnn Esempio: $123456,99 |
Il simbolo di valuta non viene inserito con il valore. Per inserire il simbolo di valuta, inserire il valore come valore letterale stringa. Questo corrisponderà al formato dello strumento dwloader, che considera ogni valore letterale come valore letterale stringa. Le virgole non sono consentite. Se il numero di cifre dopo il separatore decimale supera 2, il valore viene arrotondato fino al valore più vicino. Ad esempio, il valore 123,946789 viene inserito come 123,95. Quando si utilizza la funzione CONVERT per inserire i valori letterali money, è consentito solo lo stile predefinito 0 (senza virgole e con 2 cifre dopo il punto decimale). |