Condividi tramite


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 dal Caricatore da riga di comando dwloader quando carica i dati in PDW. Le conversioni dei dati impliciti si verificano quando i dati di input non corrispondono al tipo di dati nella tabella di destinazione SQL Server PDW. 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 SQL Server PDW di tipo binario (n) o varbinary(n).

Tipo di dati di input Esempi di dati di input Conversione in tipo di dati binary o varbinary
Valori letterali binari [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 è 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 data e ora

I valori letterali di data e ora sono rappresentati usando stringhe di testo in formati specifici, racchiusi tra virgolette singole. Le tabelle seguenti definiscono i tipi di valori 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, tempo, 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 data, smalldatetime e null non possono essere caricati in modalità a larghezza fissa.

Tipi 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 di valore letterale nel 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 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.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 in tipo di dati smalldatetime
Stringa di valore 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 opzionali e, quando presenti, devono essere impostati sul valore 00. Qualsiasi altro valore genera un codice di errore.

I secondi sono opzionali. Durante il caricamento in una colonna smalldatetime, dwloader arrotonda i secondi e i secondi frazionari. Ad esempio, 1999-01-05 20:10:35.123 verrà caricato come 01-05 20:11.
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 date

La tabella seguente definisce il formato predefinito e le regole per il caricamento di valori letterali in una colonna di tipo data. 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 dati data
Stringa di valore letterale nel formato data 'aaaa-MM-gg'

Esempio: '2007-05-08'

Tipo di dati tempo

La tabella seguente definisce il formato predefinito e le regole per il caricamento di valori letterali in una colonna di tipo tempo. 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 in tipo di dati tempo
Stringa di valore letterale nel formato ora 'hh:mm:ss.fffffff'

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 datitempo, i dati vengono riempiti a destra con zeri. 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.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 di valore letterale nel 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 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.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 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 'aaaa-MM-gg 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 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 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 di valore letterale nel formato datetime aaaa-mm-gg hh:mm:ss[.fff]

Esempio: '2007-05-08 12:35:29.123'
I secondi frazionari sono opzionali e vengono impostati su 0 quando viene inserito il valore.
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:fffffff'

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.

Formati datetime

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 data 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]yy [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

Dettagli:

  • Per separare i valori di mese, giorno e anno, è possibile usare ' - ', ' / ', or ' . '. Per semplicità, nella tabella viene usato solo il separatore "-".

  • Per specificare il mese come testo, usare tre o più caratteri. I mesi con uno o due caratteri vengono interpretati come numero.

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

  • Le lettere tra parentesi quadre sono facoltative.

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

  • Le lettere "zzz" indicano la differenza di 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 SQL Server PDW 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 in tipo di dati bit
Stringa di valore letterale nel formato intenger 'ffffffffff'

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; il valore e 'FALSO' viene convertito in 0.
Valore letterale intero 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 sono 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 Decimali

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

Tipo di dati di input Esempi di dati di input
Valore letterale intero 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 come per SQL Server. Per altre informazioni, vedere Conversione del tipo di dati (motore di database) su MSDN.

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

tipi di dati int, bigint, tinyint, smallint

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 è compreso tra -2,147,483,648 to 2,147,483,647.

Tipo di dati di input Esempi di dati di input Conversione in tipi di dati interi
Valore letterale intero 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 vengono rappresentati come stringhe di numeri con separatore decimale opzionale un simbolo di valuta come prefisso opzionale. 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 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 in tipo di dati money o smallmoney
Valore letterale intero 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 123344.34455 viene inserito come 123344.3446.
Valore letterale money $123456,7890 Il simbolo di valuta 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.

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 SQL Server PDW 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 dati di tipo carattere
Stringa di valore letterale Formato: 'stringa di caratteri'

Esempio: 'abc'
N/D
Stringa di valore letterale Unicode Formato: stringa N'character'

Esempio: N'abc'
N/D
Valore letterale intero Formato: ffffffffn

Esempio: 321312313123
N/D
Valore letterale decimale Formato: ffffff.fffffffff

Esempio: 12344.34455
N/D
Valore letterale money Formato: $ffffff.fffnn

Esempio: $123456,99
Il simbolo di valuta opzionale non viene inserito con il valore. Per inserire il simbolo di valuta, inserire il valore come valore letterale stringa. Corrisponderà al formato del caricatore, che considera ogni valore letterale come stringa di valore letterale.

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).

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.