Regole di conversione dei tipi di dati per dwloader - Servizio piattaforma di analisi (PDW)

Questo articolo descrive i formati di dati di input e le conversioni implicite dei tipi di dati supportati da dwloader Command-Line Loader quando carica i dati in PDW. Le conversioni implicite dei dati si verificano quando i dati di input non corrispondono al tipo di dati nella tabella di destinazione PDW di SQL Server. Usare queste informazioni durante la progettazione del processo di caricamento per assicurarsi che i dati vengano caricati correttamente in SQL Server PDW.

Inserire valori letterali in tipi binari

La tabella seguente definisce i tipi letterali accettati, il formato e le regole di conversione per il caricamento di un valore letterale in una colonna PDW di tipo binary (n) o varbinary(n).

Tipo di dati di input Esempi di dati di input Conversione in tipo di dati binary o varbinary
Valore letterale binario [0x]hexidecimal_string

Esempio: 12Ef o 0x12Ef
Il prefisso 0x è facoltativo.

La lunghezza dell'origine dati non può superare il numero di byte specificati per il tipo di dati.

Se la lunghezza dell'origine dati è inferiore alla dimensione del tipo di dati binario, i dati vengono riempiti a destra con zeri per raggiungere la dimensione del tipo di dati.

Inserire valori letterali in tipi di data e ora

I valori letterali di data e ora sono rappresentati usando valori letterali stringa in formati specifici, racchiusi tra virgolette singole. Le tabelle seguenti definiscono i tipi letterali, il formato e le regole di conversione consentiti per il caricamento di un valore letterale data o ora in una colonna di tipo datetime, smalldatetime, date, time, datetimeoffset o datetime2. Le tabelle definiscono il formato predefinito per il tipo di dati specificato. Altri formati che è possibile specificare sono definiti nella sezione Formati datetime. I valori letterali di data e ora non possono includere spazi iniziali o finali. I valori date, smalldatetime e Null non possono essere caricati in modalità a larghezza fissa.

Tipo di dati datetime

La tabella seguente definisce il formato predefinito e le regole per il caricamento di valori letterali in una colonna di tipo datetime. Una 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 dati di input Esempi di dati di input Conversione in tipo di dati datetime
Stringa letterale in formato datetime 'aaaa-MM-gg hh:mm:ss[.fff]'

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 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 letterale in formato data 'aaaa-MM-gg'

Esempio: '2007-05-08'
I valori di ora (ora, minuti, secondi e frazioni) vengono impostati su 12:00:00.000 quando viene inserito il valore.
Stringa letterale in formato datetime2 'aaaa-MM-gg hh:mm:ss.fffffff'

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-8 12:35:29.1234567' genera un errore.

Tipo di dati smalldatetime

La tabella seguente definisce il formato predefinito e le regole per il caricamento di valori letterali in una colonna di tipo smalldatetime. Una stringa vuota ('') viene convertita nel valore predefinito '1900-01-01 12:00'. Le stringhe che contengono solo spazi vuoti (' ') generano un errore.

Tipo di dati di input Esempi di dati di input Conversione al tipo di dati smalldatetime
Stringa letterale nel formato smalldatetime 'aaaa-MM-gg HH:mm' o 'aaaa-MM-gg HH:mm:ss'

Esempio: '2007-05-08 12:00' o '2007-05-08 12:00:15'
I dati di origine devono avere valori per anno, mese, data, ora e minuto. I secondi sono facoltativi e, se presente, devono essere impostati sul valore 00. Qualsiasi altro valore genera un errore.

I secondi sono facoltativi. Durante il caricamento in una colonna smalldatetime, dwloader arrotonda per eccesso i secondi e le frazioni di secondo. Ad esempio, 1999-01-05 20:10:35.123 verrà caricato come 01-05 20:11.
Stringa letterale in formato data 'aaaa-MM-gg'

Esempio: '2007-05-08'
I valori di ora (ora, minuti, secondi e frazioni) vengono impostati su 0 quando il valore viene inserito.

Tipo di dati date

La tabella seguente definisce il formato predefinito e le regole per il caricamento di valori letterali in una colonna di tipo date. Una stringa vuota ('') viene convertita nel valore predefinito '1900-01-01'. Le stringhe che contengono solo spazi vuoti (' ') generano un errore.

Tipo di dati di input Esempi di dati di input Conversione al tipo di dato date
Stringa letterale in formato data 'aaaa-MM-gg'

Esempio: '2007-05-08'

Tipo di dati ora

La tabella seguente definisce il formato predefinito e le regole per il caricamento di valori letterali in una colonna di tipo time. Una stringa vuota ('') viene convertita nel valore predefinito '00:00:00.0000'. Le stringhe che contengono solo spazi vuoti (' ') generano un errore.

Tipo di dati di input Esempi di dati di input Conversione del tipo di dati "time"
Stringa letterale in formato orario 'hh:mm:ss.fffffff'

Esempio: '12:35:29.1234567'
Se l'origine dei dati ha una precisione minore o uguale (numero di cifre frazionarie) rispetto alla precisione del tipo di dati time, i dati vengono riempiti con zeri a destra. Ad esempio, un valore letterale '12:35:29.123' viene inserito come '12:35:29.1230000'.

Tipo di dati datetimeoffset

La tabella seguente definisce il formato predefinito e le regole per il caricamento di valori letterali in una colonna di tipo datetimeoffset (n). Il formato predefinito è 'aaaa-MM-gg hh:mm:ss.fffffff {+|-}hh:mm'. Una stringa vuota ('') viene convertita nel valore predefinito '1900-01-01 12:00: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 dati di input Esempi di dati di input Conversione in tipo di dati datetimeoffset
Stringa letterale in formato datetime 'aaaa-MM-gg hh:mm:ss[.fff]'

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 letterale nel formato smalldatetime 'aaaa-MM-gg hh:mm'

Esempio: '2007-05-08 12:35'
Secondi, le cifre frazionarie rimanenti e i valori di offset vengono impostati su 0 quando viene inserito il valore.
Stringa letterale in formato data 'aaaa-MM-gg'

Esempio: '2007-05-08'
I valori di ora (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 letterale in formato datetime2 'aaaa-MM-gg hh:mm:ss.fffffff'

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 la fonte dati ha un numero di frazioni di secondo minore o uguale, 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 letterale nel formato datetimeoffset 'yyyy-MM-dd hh:mm:ss.fffffff {+|-} 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 la fonte dati ha un numero di frazioni di secondo minore o uguale, 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'.

Tipo di dati datetime2

La tabella seguente definisce il formato predefinito e le regole per il caricamento di valori letterali in una colonna di tipo datetime2 (n). Il formato predefinito è 'aaaa-MM-gg hh:mm:ss.fffffff'. 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 dati di input Esempi di dati di input Conversione al tipo di dati datetime2
Stringa letterale in formato datetime 'aaaa-MM-gg hh:mm:ss[.fff]'

Esempio: '2007-05-08 12:35:29.123'
I secondi frazionari sono facoltativi e vengono impostati su 0 quando viene inserito il valore.
Stringa letterale nel formato smalldatetime 'aaaa-MM-gg hh:mm'

Esempio: '2007-05-08 12'
I secondi facoltativi e le cifre frazionarie rimanenti vengono impostati su 0 quando viene inserito il valore.
Stringa letterale in formato data 'aaaa-MM-gg'

Esempio: '2007-05-08'
I valori di ora (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 letterale in formato datetime2 'aaaa-MM-gg hh:mm:ss:fffffff'

Esempio: '2007-05-08 12:35:29.1234567'
Se l'origine dati contiene componenti di dati e ora minori o uguali al valore specificato in datetime2(n), i dati vengono inseriti; in caso contrario viene generato un errore.

Formati data e ora

Dwloader supporta i formati di dati seguenti per i dati di input che sta caricando in SQL Server PDW. Altri dettagli sono elencati dopo la tabella.

datetime smalldatetime date datetime2 datetimeoffset
[M[M]]M-[d]d-[yy]yy HH:mm:ss[.fff] [M[M]]M-[d]d-[yy]yy HH:mm[:00] [M[M]]M-[d]d-[yy]yyy [M[M]]M-[d]d-[yy]yy HH:mm:ss[.fffffff] [M[M]]M-[d]d-[yy]yy HH:mm:ss[.fffffff] zzz
[M[M]]M-[d]d-[yy]yy hh:mm:ss[.fff][tt] [M[M]]M-[d]d-[yy]yy hh:mm[:00][tt] [M[M]]M-[d]d-[yy]yy hh:mm:ss[.fffffff][tt] [M[M]]M-[d]d-[yy]yy hh:mm:ss[.fffffff][tt] zzz
[M[M]]M-[yy]yy-[d]d HH:mm:ss[.fff] [M[M]]M-[yy]yy-[d]d HH:mm[:00] [M[M]]M-[yy]yy-[d]d [M[M]]M-[yy]yy-[d]d HH:mm:ss[.fffffff] [M[M]]M-[yy]yy-[d]d HH:mm:ss[.fffffff] zzz
[M[M]]M-[yy]yy-[d]d hh:mm:ss[.fff][tt] [M[M]]M-[yy]yy-[d]d hh:mm[:00][tt] [M[M]]M-[yy]yy-[d]d hh:mm:ss[.fffffff][tt] [M[M]]M-[yy]yy-[d]d hh:mm:ss[.fffffff][tt] zzz
[yy]yy-[M[M]]M-[d]d HH:mm:ss[.fff] [yy]yy-[M[M]]M-[d]d HH:mm[:00] [yy]yy-[M[M]]M-[d]d [yy]yy-[M[M]]M-[d]d HH:mm:ss[.fffffff] [yy]yy-[M[M]]M-[d]d HH:mm:ss[.fffffff] zzz
[yy]yy-[M[M]]M-[d]d hh:mm:ss[.fff][tt] [yy]yy-[M[M]]M-[d]d hh:mm[:00][tt] [yy]yy-[M[M]]M-[d]d hh:mm:ss[.fffffff][tt] [yy]yy-[M[M]]M-[d]d hh:mm:ss[.fffffff][tt] zzz
[yy]yy-[d]d-[M[M]]M HH:mm:ss[.fff] [yy]yy-[d]d-[M[M]]M HH:mm[:00] [yy]yy-[d]d-[M[M]]M [yy]yy-[d]d-[M[M]]M HH:mm:ss[.fffffff] [yy]yy-[d]d-[M[M]]M HH:mm:ss[.fffffff] zzz
[yy]yy-[d]d-[M[M]]M hh:mm:ss[.fff][tt] [yy]yy-[d]d-[M[M]]M hh:mm[:00][tt] [yy]yy-[d]d-[M[M]]M hh:mm:ss[.fffffff][tt] [yy]yy-[d]d-[M[M]]M hh:mm:ss[.fffffff][tt] zzz
[d]d-[M[M]]M-[yy]yy HH:mm:ss[.fff] [d]d-[M[M]]M-[yy]yy HH:mm[:00] [d]d-[M[M]]M-[yy]yy [d]d-[M[M]]M-[yy]yy HH:mm:ss[.fffffff] [d]d-[M[M]]M-[yy]yy HH:mm:ss[.fffffff] zzz
[d]d-[M[M]]M-[yy]yy hh:mm:ss[.fff][tt] [d]d-[M[M]]M-[yy]yy hh:mm[:00][tt] [d]d-[M[M]]M-[yy]yy hh:mm:ss[.fffffff][tt] [d]d-[M[M]]M-[yy]yy hh:mm:ss[.fffffff][tt] zzz
[d]d-[yy]yy-[M[M]]M HH:mm:ss[.fff] [d]d-[yy]yy-[M[M]]M HH:mm[:00] [d]d-[yy]yy-[M[M]]M [d]d-[yy]yy-[M[M]]M HH:mm:ss[.fffffff] [d]d-[yy]yy-[M[M]]M HH:mm:ss[.fffffff] zzz
[d]d-[yy]yy-[M[M]]M hh:mm:ss[.fff][tt] [d]d-[yy]yy-[M[M]]M hh:mm[:00][tt] [d]d-[yy]yy-[M[M]]M hh:mm:ss[.fffffff][tt] [d]d-[yy]yy-[M[M]]M hh:mm:ss[.fffffff][tt] zzz

Details:

  • Per separare i valori di mese, giorno e anno, è possibile usare ' - ', ' / ' o ' . '. Per semplicità, la tabella usa solo il separatore ' - ' .

  • Per specificare il mese come testo, utilizzare tre o più caratteri. I mesi con 1 o 2 caratteri vengono interpretati come un numero.

  • Per separare i valori temporali, usare il simbolo ' : ' .

  • Le lettere tra parentesi quadre sono facoltative.

  • Le lettere 'tt' designano AM|PM|am|pm. AM è l'impostazione predefinita. Quando si specifica "tt", il valore dell'ora (hh) deve essere compreso nell'intervallo compreso tra 0 e 12.

  • Le lettere 'zzz' designano l'offset del fuso orario per il fuso orario corrente del sistema nel formato {+|-}HH:ss].

Inserire valori letterali in tipi numerici

Le tabelle seguenti definiscono le regole di formato e conversione predefinite per il caricamento di un valore letterale in una colonna PDW di SQL Server che usa un tipo numerico.

tipo di dati bit

La tabella seguente definisce il formato predefinito e le regole per il caricamento di valori letterali in una colonna di tipo bit. Una stringa vuota ('') o una stringa che contiene solo spazi vuoti (' ') viene convertita in 0.

Tipo di dati di input Esempi di dati di input Conversione al tipo di dati bit
Valore letterale stringa in formato integer ffffffffff

Esempio: '1' o '321'
Un valore intero formattato come valore letterale stringa 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 letterale 'VERO' o 'FALSO'

Esempio: 'true'
Il valore 'TRUE' viene convertito in 1; il valore 'FALSE' viene convertito in 0.
Valore letterale integer fffffffn

Esempio: 1 o 321
Un valore maggiore di 1 o minore di 0 viene convertito in 1. Ad esempio, i valori 123 e -123 vengono convertiti in 1.
Valore letterale decimale fffnn.fffn

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.

Tipo di dati decimale

La tabella seguente definisce le regole per il caricamento di valori letterali in una colonna di tipo decimal (p,s). Le regole di conversione dei dati sono uguali a per SQL Server. Per altre informazioni, vedere Conversione dei tipi di dati (motore di database) su MSDN.

Tipo di dati di input Esempi di dati di input
Valore letterale integer 321312313123
Valore letterale decimale 123344.34455

tipi di dati float e reali

La tabella seguente definisce le regole per il caricamento di valori letterali in una colonna di tipo float o real. Le regole di conversione dei dati sono uguali a per SQL Server. Per altre informazioni, vedere Conversione dei tipi di dati (motore di database) su MSDN.

Tipo di dati di input Esempi di dati di input
Valore letterale integer 321312313123
Valore letterale decimale 123344.34455
Valore letterale a virgola mobile 3.12323E+14

int, bigint, tinyint, smallint, tipi di dati

La tabella seguente definisce le regole per il caricamento di valori letterali in una colonna di tipo int, bigint, tinyint o 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 è -2.147.483.648 a 2.147.483.647.

Tipo di dati di input Esempi di dati di input Conversione in tipi di dati Integer
Valore letterale integer 321312313123
Valore letterale decimale 123344.34455 I valori a destra del separatore decimale vengono troncati.

tipi di dati 'money' e 'smallmoney'

I valori letterali money sono rappresentati come stringa di numeri con un separatore decimale facoltativo e un simbolo di valuta facoltativo come prefisso. L'origine dati non può superare l'intervallo consentito per il tipo di dati specificato. Ad esempio, l'intervallo per smallmoney è -214.748.3648 a 214.748.3647 e l'intervallo per i soldi è -922,3 Da 37.203.685.477.5808 a 922.337.203.685.477.5807. La tabella seguente definisce le regole per il caricamento di valori letterali in una colonna di tipo money o smallmoney.

Tipo di dati di input Esempi di dati di input Conversione al tipo di dato money o smallmoney
Valore letterale integer 321312 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 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 1233444.34455 viene inserito come 123344.3446.
Valore letterale del denaro $123456,7890 Il simbolo della valuta non è inserito insieme al valore.

Se il numero di cifre dopo il separatore decimale supera 4, il valore viene arrotondato fino al valore più vicino.

Inserire valori letterali in tipi stringa

Le tabelle seguenti definiscono le regole di formato e conversione predefinite per il caricamento di un valore letterale in una colonna PDW di SQL Server che usa un tipo stringa.

tipi di dati char, varchar, nchar e nvarchar

La tabella seguente definisce il formato e le regole predefiniti per il caricamento di valori letterali in una colonna 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 dati di input Esempi di dati di input Conversione in tipi di dati character
Stringa letterale Formato: 'stringa di caratteri'

Esempio: 'abc'
NA
Stringa letterale Unicode Formato: N'stringa di caratteri'

Esempio: N'abc'
NA
Valore letterale integer Formato: ffffffffn

Esempio: 321312313123
NA
Valore letterale decimale Formato: ffffff.fffffffff

Esempio: 12344.34455
NA
Valore letterale del denaro Formato: $ffffff.fffnn

Esempio: $123456,99
Il simbolo di valuta facoltativo non viene inserito insieme al valore. Per inserire il simbolo di valuta, inserire il valore come stringa letterale. Corrisponderà al formato del caricatore, 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.

Solo lo stile predefinito 0 (senza virgole e 2 cifre dopo il separatore decimale) è consentito quando si usa la funzione CONVERT per inserire valori letterali money.

Osservazioni generali

dwloader esegue le stesse conversioni implicite eseguite da SMP SQL Server, ma non supporta tutte le conversioni implicite supportate da SMP SQL Server.