Condividi tramite


Caricatore da riga di comando dwloader per Parallel Data Warehouse

dwloader è uno strumento da riga di comando Parallel Data Warehouse (PDW) che carica le righe di tabella in blocco in una tabella esistente. Quando si caricano righe, è possibile aggiungere tutte le righe alla fine della tabella (modalità Append o modalità fastappend), aggiungere nuove righe e aggiornare le righe esistenti (modalità upsert) o eliminare tutte le righe esistenti prima del caricamento e quindi inserire tutte le righe in una tabella vuota (modalità caricamento).

Processo di caricamento dei dati

  1. Preparare i dati di origine.

    Usare il proprio processo ETL per creare i dati di origine che si desidera caricare. I dati di origine devono essere formattati in modo che corrispondano allo schema della tabella di destinazione. Archiviare i dati di origine in uno o più file di testo e copiare i file di testo nella stessa directory nel server di caricamento. Per informazioni sul server di caricamento, vedere Acquisire e configurare un server di caricamento

  2. Preparare le opzioni di caricamento.

    Decidere quali opzioni di caricamento verranno usate. Archiviare le opzioni di caricamento in un file di configurazione. Copiare il file di configurazione in un percorso locale nel server di caricamento. Le opzioni di configurazione di dwloader sono descritte in questo argomento.

  3. Preparare le opzioni di errore di caricamento.

    Decidere come si vuole chedwloader gestisca le righe che non vengono caricate. Per effettuare il caricamento, dwloader carica prima i dati in una tabella di staging e quindi trasferisce i dati alla tabella di destinazione. Quando il caricatore carica i dati nella tabella di staging, tiene traccia del numero di righe non caricate. Ad esempio, le righe non formattate correttamente non riusciranno a caricarsi. Le righe non caricate vengono copiate in un file di rifiuto. Per impostazione predefinita, il carico viene interrotto dopo il primo rifiuto, a meno che non si specifichi una soglia di rifiuto diversa.

  4. Installare dwloader.

    Se non è già installato, installare dwloader nel server di caricamento.

  1. Eseguire dwloader.

    Accedere al server di caricamento ed eseguire il dwloader.exe eseguibile con le opzioni della riga di comando appropriate.

  2. Verificare i risultati.

    È possibile controllare il file di righe non riuscite (specificato con -R) per verificare se le righe non sono state caricate. Se il file è vuoto, tutte le righe sono state caricate correttamente. dwloader è transazionale, quindi se un passaggio ha esito negativo (diverso dalle righe rifiutate), tutti i passaggi eseguiranno il rollback allo stato iniziale.

Sintassi

dwloader.exe { -h }  
  
dwloader.exe   
    {  
        { -U login_name  -P password  }  
        | -W  
    }  
    [ -f parameter_file ]  
    [ -S target_appliance ]  
    { -T target_database_name . [ schema ] . table_name }   
    { -i source_data_location } [ <source_data_options> ]  
    { -R load_failure_file_name } [ <load_failure_options> ]  
    [ <loading_options> ]  
}  
  
<source_data_options> ::=  
{  
    [ -fh number_header_rows ]  
    [ < variable_length_column_options > | < fixed_width_column_options > ]  
    [ -D { mdy | myd | ymd | ydm | dmy | dym | custom_date_format } ]  
    [ -dt datetime_format_file ]  
}  
  
<variable_length_column_options> ::=  
{  
    [ -e character_encoding ]  
    -r row_delimiter   
    [ -s string_delimiter ]  
    -t field_delimiter   
}  
  
<fixed_width_column_options> ::=  
{  
    -w fixed_width_config_file   
    [ -e character_encoding ]   
    -r row_delimiter   
}  
  
<load_failure_options> ::=  
{  
    [ -rt { value | percentage } ]  
    [ -rv reject_value ]  
    [ -rs reject_sample_value ]  
}  
  
<loading_options> ::=  
{  
    [ -d staging_database_name ]  
    [ -M { append | fastappend | upsert -K merge_column [ ,...n ] | reload } ]  
    [ -b batchsize ]   
    [ -c ]  
    [ -E ]  
    [ -m ]  
    [ -N ]  
    [ -se ]
    [ -l ]   
}  

Argomenti

-h
Visualizza semplici informazioni di aiuto online sull'uso del caricatore. L’aiuto online viene visualizzato solo se non vengono specificati altri parametri dalla riga di comando.

-U login_name
Un account di accesso valido per l'autenticazione di SQL Server con le autorizzazioni appropriate per eseguire il caricamento.

-P password
Password per un login_name di autenticazione SQL Server.

-W
Utilizza l'autenticazione di Windows. Non è richiesto login_name o password .

-f parameter_file_name
Usare un file di parametri, parameter_file_name, al posto dei parametri dalla riga di comando. parameter_file_name può contenere qualsiasi parametro della riga di comando, ad eccezione diuser_name e password. Se nella riga di comando e nel file di parametri viene specificato un parametro, la riga di comando sostituisce il parametro del file.

Il file di parametri contiene un parametro per riga, senza il - prefisso.

Esempi:

rt=percentage

rv=25

-S target_appliance
Specifica l'appliance SQL Server PDW che riceverà i dati caricati.

Per le connessioni Infiniband, target_appliance viene specificato come <appliance-name>-SQLCTL01. Per configurare questa connessione denominata, vedere Configurare schede di rete InfiniBand .

Per le connessioni Ethernet, target_appliance è l'indirizzo IP per il cluster del nodo di controllo.

Se omesso, dwloader viene impostato in modo predefinito sul valore specificato durante l'installazione.

-T target_database_name.[schema].table_name
Nome in tre parti per la tabella di destinazione.

-I source_data_location
Percorso di uno o più file di origine da caricare. Ogni file di origine deve essere un file di testo o un file di testo compresso con gzip. È possibile comprimere un solo file di origine per ogni file gzip.

Per formattare un file di origine:

  • Il file di origine deve essere formattato in base alle opzioni di caricamento.

  • Ogni riga di un file di origine contiene i dati per una riga di tabella. I dati di origine devono corrispondere allo schema della tabella di destinazione. Anche l'ordine delle colonne e i tipi di dati devono corrispondere. Ogni campo nella riga rappresenta una colonna nella tabella di destinazione.

  • Per impostazione predefinita, i campi sono di lunghezza variabile e separati da un delimitatore. Per specificare il tipo di delimitatore, usare le opzioni della riga di comando <variable_length_column_options> . Per specificare i campi a lunghezza fissa, usare le opzioni della riga di comando<fixed_width_column_options> .

Per specificare il percorso dei dati di origine:

  • Il percorso dei dati di origine può essere sia un percorso di rete che un percorso locale di una directory nel server di caricamento.

  • Per specificare tutti i file in una directory, immettere il percorso della directory seguito dal carattere jolly * . Il caricatore non carica i file da alcuna sotto-directory che si trovano nel percorso dei dati di origine. Errori del caricatore quando esiste una directory in un file gzip.

  • Per specificare alcuni dei file in una directory, usare una combinazione di caratteri e il carattere jolly * .

Per caricare più file con un comando:

  • Tutti i file devono trovarsi nella stessa directory.

  • I file devono essere tutti file di testo, file gzip o una combinazione di file di testo e gzip.

  • Nessun file può contenere informazioni sull'intestazione.

  • Tutti i file devono usare lo stesso tipo di codifica dei caratteri. Vedere questa opzione

  • Tutti i file devono essere caricati nella stessa tabella.

  • Tutti i file verranno concatenati e caricati come se fossero un unico file e le righe rifiutate verranno spostate in un singolo file di rifiuto.

Esempi:

  • -i \\loadserver\loads\daily\*.gz

  • -i \\loadserver\loads\daily\*.txt

  • -i \\loadserver\loads\daily\monday.*

  • -i \\loadserver\loads\daily\monday.txt

  • -i \\loadserver\loads\daily\*

-R load_failure_file_name
In caso di errori di caricamento, dwloader archivia la riga che non è riuscita a caricare e la descrizione dell'errore in un file denominato load_failure_file_name. Se il file esiste già, dwloader sovrascriverà il file esistente. load_failure_file_name viene creato quando si verifica il primo errore. Se tutte le righe vengono caricate con successo, load_failure_file_name non viene creato.

-fh number_header_rows
Numero di righe (righe) da ignorare all'inizio di source_data_file_name. Il valore predefinito è 0.

<variable_length_column_options>
Opzioni per un source_data_file_name con colonne a lunghezza variabile delimitate da caratteri. Per impostazione predefinita, source_data_file_name contiene caratteri ASCII nelle colonne a lunghezza variabile.

Per i file ASCII, i valori NULL vengono rappresentati posizionando i delimitatori consecutivamente. Ad esempio, in un file delimitato da pipe ("|"), un valore NULL è indicato da "||". In un file delimitato da virgole, un valore NULL è indicato da ",,". Inoltre, è necessario specificare l'opzione -E (--emptyStringAsNull). Per maggiori informazioni su -E, vedere sotto.

-e character_encoding
Specifica un tipo di codifica caratteri per i dati da caricare dal file di dati. Le opzioni sono ASCII (impostazione predefinita), UTF8, UTF16 o UTF16BE, dove UTF16 è little endian e UTF16BE è big endian. Queste opzioni non fanno distinzione tra maiuscole e minuscole.

-t field_delimiter
Delimitatore per ogni campo (colonna) nella riga. Il delimitatore di campo è almeno uno di questi caratteri di escape ASCII o valori hex ASCII.

Nome Carattere escape Carattere hex
Tab \t 0x09
Ritorno a capo \r 0x0d
Avanzamento riga \n 0x0a
CRLF \r?\n 0x0d0x0a
Virgola ',' 0x2c
Virgoletta doppia \" 0x22
Virgoletta singola \' 0x27

Per specificare il carattere pipe nella riga di comando, racchiuderlo tra virgolette doppie, "|". In questo modo si evitano errori di interpretazione da parte del parser della riga di comando. Gli altri caratteri sono racchiusi tra virgolette singole.

Esempi:

-t "|"

-t ' '

-t 0x0a

-t \t

-t '~|~'

-r row_delimiter
Delimitatore per ogni riga del file di dati di origine. Il delimitatore di riga è uno o più valori ASCII.

Per specificare un ritorno a capo (RC), avanzamento riga (AR) o un carattere di tabulazione come delimitatore, è possibile usare i caratteri di escape (\r, \n, \t) o i relativi valori hex (0x, 0d, 09). Per specificare qualsiasi altro carattere speciale come delimitatori, usare il relativo valore hex.

Esempi di RC+AR:

-r \r\n

-r 0x0d0x0a

Esempi di RC:

-r \r

-r 0x0d

Esempi di AR:

-r \n

-r 0x0a

Per Unix è necessario un AR. Per Windows è necessario un RC.

-s string_delimiter
Specifica il delimitatore del campo per i dati di tipo stringa di un file di input di testo delimitato. Il delimitatore di stringa è uno o più valori ASCII. Può essere specificato come carattere (ad esempio, -s *) o come valore hex (ad esempio, -s 0x22 per una virgoletta doppia).

Esempi:

-s *

-s 0x22

< fixed_width_column_options>
Opzioni per un file di dati di origine con colonne a lunghezza fissa. Per impostazione predefinita, source_data_file_name contiene caratteri ASCII nelle colonne a lunghezza variabile.

Le colonne a larghezza fissa non sono supportate quando -e è UTF8.

-w fixed_width_config_file
Percorso e nome del file di configurazione che specifica il numero di caratteri in ogni colonna. È necessario specificare ogni campo.

Questo file deve risiedere nel server di caricamento. Il percorso può essere UNC, relativo o assoluto. Ogni riga in fixed_width_config_file contiene il nome di una colonna e il numero di caratteri per tale colonna. Esiste una riga per colonna, come indicato di seguito e l'ordine nel file deve corrispondere all'ordine nella tabella di destinazione:

=column_name num_chars

=column_name num_chars

Esempio di file di configurazione a larghezza fissa:

SalesCode=3

SalesID=10

Righe di esempio in source_data_file_name:

230Shirts0056

320Towels1356

Nell'esempio precedente la prima riga caricata avrà SalesCode='230' e SalesID='Shirts0056'. La seconda riga caricata avrà SalesCode='320' e SaleID='Towels1356'.

Per informazioni su come gestire gli spazi iniziali e finali o la conversione dei tipi di dati in modalità a larghezza fissa, vedere Regole di conversione dei tipi di dati per dwloader.

-e character_encoding
Specifica un tipo di codifica caratteri per i dati da caricare dal file di dati. Le opzioni sono ASCII (impostazione predefinita), UTF8, UTF16 o UTF16BE, dove UTF16 è little endian e UTF16BE è big endian. Queste opzioni non fanno distinzione tra maiuscole e minuscole.

Le colonne a larghezza fissa non sono supportate quando -e è UTF8.

-r row_delimiter
Delimitatore per ogni riga del file di dati di origine. Il delimitatore di riga è uno o più valori ASCII.

Per specificare un ritorno a capo (RC), avanzamento riga (AR) o un carattere di tabulazione come delimitatore, è possibile usare i caratteri di escape (\r, \n, \t) o i relativi valori hex (0x, 0d, 09). Per specificare qualsiasi altro carattere speciale come delimitatori, usare il relativo valore hex.

Esempi di RC+AR:

-r \r\n

-r 0x0d0x0a

Esempi di RC:

-r \r

-r 0x0d

Esempi di AR:

-r \n

-r 0x0a

Per Unix è necessario un AR. Per Windows è necessario un RC.

-D { ymd | agm | mdy | myd | dmy | dym | custom_date_format }
Specifica l'ordine di mese (m), giorno (g) e anno (a) per tutti i campi datetime nel file di input. L'ordine predefinito è amg. Per specificare più formati di ordine per lo stesso file di origine, usare l'opzione -dt.

amg | gma
agm e gma consentono gli stessi formati di input. Entrambi consentono di inserire l'anno all'inizio o alla fine della data. Ad esempio, per i formati di data agm e gma, è possibile avere nel file di input 2013-02-03 o 02-03-2013.

agm
È possibile caricare l'input formattato come agm solo in colonne di tipo di dati datetime e smalldatetime. Non è possibile caricare i valori agm in una colonna del tipo di dati datetime2, data o datetimeoffset.

mdy
mdy consente <mese><spazio><giorno><virgola><anno>.

Esempi di dati di input mdy per il 1° gennaio 1975:

  • 1 gennaio 1975

  • 1 gen 75

  • gen/1/75

  • 01011975

myd
Esempi di file di input per il 04 marzo 2010: 03-2010-04, 3/2010/4

dym
Esempi di file di input per il 04 marzo 2010: 04-2010-03, 4/2010/3

custom_date_format
custom_date_format è un formato di data personalizzato (ad esempio, MM/gg/aaaa) e incluso solo per compatibilità con le versioni precedenti. dwloader non applica il formato di data personalizzato. Quando invece si specifica un formato di data personalizzato, dwloader lo convertirà nell'impostazione corrispondente di amg, agm, mga, mag, gam o gma.

Ad esempio, se si specifica -D MM/gg/aaaa, dwloader prevede che in tutti gli input di data l’ordine sia prima il mese, poi il giorno e infine l’anno (mga). Non applica mesi con 2 caratteri, giorni a 2 cifre e anni a 4 cifre come specificato dal formato di data personalizzato. Ecco alcuni esempi di modi in cui le date possono essere formattate nel file di input quando il formato della data è -D MM/gg/aaaa: 01/02/2013, Gen.02.2013, 1/2/2013

Per informazioni più complete sulla formattazione, vedere Regole di conversione dei tipi di data per dwloader.

-dt datetime_format_file
Ogni formato datetime viene specificato in un file denominato datetime_format_file. A differenza dei parametri della riga di comando, i parametri di file che includono spazi non devono essere racchiusi tra virgolette doppie. Non è possibile modificare il formato datetime durante il caricamento dei dati. Il file di dati di origine e la colonna corrispondente nella tabella di destinazione devono avere lo stesso formato.

Ogni riga contiene il nome di una colonna nella tabella di destinazione e il relativo formato datetime.

Esempi:

LastReceiptDate=ymd

ModifiedDate=dym

-d staging_database_name
Nome del database in cui sarà contenuta la tabella di staging. Il valore predefinito è il database specificato con l'opzione -T, ovvero il database per la tabella di destinazione. Per altre informazioni sull'uso di un database dell'area di gestione temporanea, vedere Creare il database di staging.

-M load_mode_option
Specifica se aggiungere, inserire o ricaricare i dati. La modalità predefinita è aggiungere.

aggiungere
Il caricatore inserisce righe alla fine delle righe esistenti nella tabella di destinazione.

inserimento veloce
Il caricatore inserisce le righe direttamente alla fine delle righe esistenti nella tabella di destinazione, senza l’uso di una tabella temporanea. l’inserimento veloce richiede l'opzione multi-transazione (-m). Non è possibile specificare un database di staging quando si usa l’inserimento veloce. L’inserimento veloce non consente il ripristino dello stato precedente, il che significa che il ripristino da un caricamento non riuscito o interrotto deve essere gestito dal proprio processo di caricamento.

upsert -K merge_column [ ,...n ]
Il caricatore usa l'istruzione unione di SQL Server per aggiornare le righe esistenti e inserire nuove righe.

L'opzione -K specifica la colonna o le colonne su cui effettuare l'unione. Queste colonne formano una chiave di unione, che deve rappresentare una riga univoca. Se la chiave di unione esiste nella tabella di destinazione, la riga viene aggiornata. Se la chiave di unione non esiste nella tabella di destinazione, la riga viene aggiunta.

Per le tabelle con distribuzione hash, la chiave di unione deve essere o includere la colonna di distribuzione.

Per le tabelle replicate, la chiave di unione è la combinazione di una o più colonne. Queste colonne vengono specificate in base alle esigenze dell'applicazione.

Più colonne devono essere separate da virgole senza spazi o delimitate da virgole con spazi e racchiuse tra virgolette singole.

Se due righe nella tabella di origine hanno valori di chiave di unione corrispondenti, le rispettive righe devono essere identiche.

ricarica
Il caricatore tronca la tabella di destinazione prima di inserire i dati di origine.

-b batchsize
Consigliato solo per l'uso da parte del supporto tecnico Microsoft, batchsize è la dimensione batch di SQL Server per la copia bulk eseguita dal Servizio Migrazione del database nelle istanze di SQL Server nei nodi di calcolo. Quando batchsize è specificato, SQL Server PDW sostituirà le dimensioni di caricamento batch calcolate in modo dinamico per ogni carico.

A partire da SQL Server 2012 PDW, il nodo di controllo calcola in modo dinamico le dimensioni del batch per ogni carico per impostazione predefinita. Questo calcolo automatico si basa su diversi parametri, come la dimensione della memoria, il tipo di tabella di destinazione, lo schema della tabella di destinazione, il tipo di carico, le dimensioni del file e la classe di risorse dell'utente.

Ad esempio, se la modalità di caricamento è INSERIMENTO VELOCE e la tabella ha un indice columnstore cluster, SQL Server PDW tenterà per impostazione predefinita di usare una dimensione batch di 1.048.576 in modo che i rowgroup diventino CHIUSO e vengano caricati direttamente nel columnstore senza passare attraverso l'archivio differenziale. Se la memoria non consente una dimensione batch di 1.048.576, dwloader sceglierà una dimensione batch più piccola.

Se il tipo di carico è INSERIMENTO VELOCE, la dimensione batch si applica al caricamento dei dati nella tabella. In caso contrario , batchsize si applica al caricamento dei dati nella tabella di staging.

<reject_options>
Specifica le opzioni per determinare il numero di errori di caricamento consentiti dal caricatore. Se gli errori di caricamento superano la soglia, il caricatore si interrompe e non esegue il commit di nessuna riga.

-rt { value | percentage }
Specifica se l'opzione -reject_value in -rv reject_value è un valore letterale di righe (valore) o una frequenza di errore (percentuale). Il valore è predefinito.

L'opzione percentuale è un calcolo in tempo reale che si verifica a intervalli a seconda dell'opzione -rs.

Ad esempio, se il caricatore tenta di caricare 100 righe e 25 hanno esito negativo e 75 ha esito positivo, la percentuale di errori è del 25%.

-rv reject_value
Specifica il numero o la percentuale di righe rifiutate consentite prima di interrompere il caricamento. L'opzione -rt determina se reject_value fa riferimento al numero di righe o alla percentuale di righe.

Il valore predefinito reject_value è 0.

Se usato con il valore -rt, il caricatore arresta il caricamento quando il conteggio delle righe rifiutate supera reject_value.

Se usato con la percentuale -rt, il caricatore calcola la percentuale a intervalli (opzione -rs). Pertanto, la percentuale di righe non riuscite può superare reject_value.

-rs reject_sample_size
Usato con l'opzione -rt percentage per specificare i controlli percentuali incrementali. Ad esempio, se reject_sample_size è 1000, il caricatore calcola la percentuale di righe con esito negativo dopo che ha tentato di caricare 1000 righe. Ricalcola la percentuale di righe con esito negativo dopo aver tentato di caricare ognuna delle 1000 righe aggiuntive.

-c
Rimuove gli spazi vuoti dal lato sinistro e destro dei campi char, nchar, varchar e nvarchar. Converte ogni campo contenente solo spazi vuoti in stringa vuota.

Esempi:

' ' viene troncato in ''

' abc ' viene troncato in 'abc'

Quando -c viene usato con -E, l'operazione -E viene eseguita per prima. I campi che contengono solo spazi vuoti vengono convertiti in stringa vuota e non in NULL.

-E
Convertire stringhe vuote in NULL. L'impostazione predefinita non prevede l'esecuzione di queste conversioni.

-m
Utilizzare la modalità multi-transazione per la seconda fase di caricamento; durante il caricamento di dati dalla tabella di staging in una tabella distribuita.

Con -m, SQL Server PDW effettua ed esegue i commit in parallelo. Questa operazione risulta molto più veloce rispetto alla modalità di caricamento predefinita, ma non è sicura per le transazioni.

Senza -m, SQL Server PDW effettua ed esegue il commit serialmente tra le distribuzioni all'interno di ogni nodo di calcolo e contemporaneamente tra i nodi di calcolo. Questo metodo è più lento rispetto alla modalità multi-transazione, ma è sicuro per le transazioni.

-m è facoltativo per aggiungere, ricaricare e inserire.

-m è obbligatorio per inserimento veloce.

-m non può essere usato con le tabelle replicate.

-m si applica solo alla seconda fase di caricamento. Non si applica alla prima fase di caricamento; caricamento dei dati nella tabella di staging.

La modalità multi-transazione non consente il ripristino dello stato precedente, il che significa che il ripristino da un caricamento non riuscito o interrotto deve essere gestito dal proprio processo di caricamento.

È consigliabile usare -m solo durante il caricamento in una tabella vuota, in modo da poter eseguire il ripristino senza perdita di dati. Per eseguire il ripristino da un errore di caricamento: eliminare la tabella di destinazione, risolvere il problema di caricamento, ricreare la tabella di destinazione ed eseguire nuovamente il caricamento.

-N
Verificare che l'appliance di destinazione disponga di un certificato SQL Server PDW valido rilasciato da un'autorità attendibile. Usare questa opzione per assicurarsi che i dati non vengano dirottati da un utente malintenzionato e inviati a una posizione non autorizzata. Il certificato deve essere già installato nell'appliance. L’uso dello strumento Gestione configurazione da parte dell'amministratore dell'appliance è l’unico modo supportato per l’installazione del certificato. Chiedere all'amministratore dell'appliance se non si è certi che l'appliance abbia già un certificato attendibile installato.

-se
Ignorare il caricamento di file vuoti. In questo modo si evita anche la decompressione di file gzip vuoti.

-l
Disponibile con l'aggiornamento CU7.4, specifica la lunghezza massima della riga (in byte) che può essere caricata. I valori validi sono numeri interi compresi tra 32768 e 33554432. Usare solo quando necessario per caricare righe di grandi dimensioni (maggiori di 32 KB), poichè assegnerà più memoria nel client e nel server.

Valori del codice restituito

0 (esito positivo) o altro valore intero (errore)

In una finestra di comando o in un file batch, usare errorlevel per visualizzare il codice restituito. Ad esempio:

dwloader  
echo ReturnCode=%errorlevel%  
if not %errorlevel%==0 echo Fail  
if %errorlevel%==0 echo Success  

Quando si usa PowerShell, usare $LastExitCode.

Autorizzazioni

Richiede l'autorizzazione CARICARE e le autorizzazioni applicabili (INSERIRE, AGGIORNARE, ELIMINARE) nella tabella di destinazione. Richiede l'autorizzazione CREATE (per la creazione di una tabella temporanea) nel database di staging. Se non viene usato un database di staging, è necessaria l'autorizzazione CREARE per il database di destinazione.

Osservazioni generali

Per informazioni sulle conversioni dei tipi di dati durante il caricamento con dwloader, vedere Regole di conversione dei tipi di dati per dwloader.

Se un parametro include uno o più spazi, racchiudere il parametro tra virgolette doppie.

È necessario avviare il caricatore dal percorso installato. Il wloader da eseguire è preinstallato con l'appliance e si trova nella directory C:\Programmi\Microsoft SQL Server Data Warehouse\DWLoader.

È possibile eseguire sostituire un parametro specificato nel file dei parametri (opzione -f) specificandolo come parametro della riga di comando.

È possibile eseguire contemporaneamente più istanze del caricatore. Il numero massimo di istanze del caricatore è preconfigurato e non può essere modificato.

I dati caricati potrebbero richiedere uno spazio maggiore o inferiore nell'appliance, rispetto alla posizione di origine. È possibile eseguire importazioni di test con subset di dati per stimare l'utilizzo del disco.

Anche se dwloader è un processo di transazione e verrà eseguito correttamente il rollback in caso di errore, non può essere eseguito il rollback dopo che il caricamento bulk è stato completato correttamente. Per annullare un processo dwloader attivo, digitare CTRL+C.

Limitazioni e restrizioni

Le dimensioni totali di tutti i carichi che si verificano simultaneamente devono essere inferiori a LOG_SIZE per il database. È consigliabile che le dimensioni totali di tutti i carichi simultanei siano inferiori al 50% del LOG_SIZE. Per rispettare i limiti delle dimensioni, è possibile suddividere carichi di grandi dimensioni in più batch. Per ulteriori informazioni su LOG_SIZE, vedere CREARE DATABASE.

Quando si caricano più file con un comando di caricamento, tutte le righe rifiutate vengono scritte nello stesso file di rifiuto. Il file rifiuto non mostra quale file di input contiene ogni riga rifiutata.

La stringa vuota non deve essere usata come delimitatore. Quando una stringa vuota viene usata come delimitatore di riga, il caricamento avrà esito negativo. Se utilizzato come delimitatore di colonna, il caricamento ignora il delimitatore e continua a usare il valore predefinito "|" come delimitatore di colonna. Se usato come delimitatore di stringa, la stringa vuota viene ignorata e viene applicato il comportamento predefinito.

Comportamento di blocco

Il comportamento di blocco del dwloader varia a seconda del load_mode_option.

  • aggiungere - Aggiungere è l'opzione consigliata e più comune. Aggiungere carica i dati in una tabella di staging. Il blocco è descritto in dettaglio di seguito.

  • inserimento veloce - Inserimento veloce si carica direttamente nella tabella finale con un blocco di tabella ExclusiveUpdate ed è l'unica modalità che non usa una tabella di staging.

  • caricamento - Caricamento carica i dati in una tabella di staging e richiede un blocco esclusivo sia sulla tabella di staging che sulla tabella finale. Il ricaricamento non è consigliato per le operazioni simultanee.

  • inserire - Inserire carica i dati in una tabella di staging e quindi esegue un'operazione di unione dalla tabella di staging alla tabella finale. Inserire non richiede blocchi esclusivi sulla tabella finale. Le prestazioni possono variare quando si usa inserire. Verificare il comportamento in un ambiente di test.

Comportamento di blocco

Blocco della modalità di inserimento

Aggiungere può essere eseguito in modalità multi transazionale (usando l'argomento -m), ma non è sicuro per le transazioni. Di conseguenza, aggiungere deve essere usata come operazione transazionale (senza usare l'argomento -m). Purtroppo, durante l'ultima operazione INSERIRE-SELEZIONARE, la modalità transazionale è attualmente circa sei volte più lenta rispetto alla modalità multi transazionale.

La modalità aggiungere carica i dati in due fasi. La fase uno carica i dati dal file di origine in una tabella di staging simultaneamente (può verificarsi una frammentazione). La fase due carica i dati dalla tabella di staging alla tabella finale. La seconda fase esegue un'operazione INSERIRE IN…SELEZIONARE CON (TABLOCK). La tabella seguente mostra il comportamento di blocco nella tabella finale e il comportamento di registrazione quando si usa la modalità aggiungere:

Tipo di tabella Multi-transazione
Modalità (-m)
La tabella è vuota Simultaneità supportata Registrazione
Heap Minima
Heap No Minima
Heap No No Minima
Heap No No No Minima
Cl No Minima
Cl No Completo
Cl No No Minima
Cl No No Completo

Nella tabella precedente, dwloader usa la modalità aggiungere che effettua il caricamento in un heap o in una tabella di indice cluster (IC), con o senza il flag multi transazionale, e che effettua il caricamento in una tabella vuota o in una tabella non vuota. Nella tabella viene visualizzato il comportamento di blocco e registrazione di ogni combinazione di carico. Ad esempio, nella (2^) fase di caricamento con la modalità aggiungere in un indice cluster senza modalità multi-transazionale e in una tabella vuota, PDW creerà un blocco esclusivo sulla tabella, con accesso ridotto. Ciò significa che un cliente non sarà in grado di caricare la (2^) fase e di eseguire query simultaneamente in una tabella vuota. Tuttavia, quando si carica con la stessa configurazione in una tabella non vuota, PDW non emetterà un blocco esclusivo sulla tabella e la simultaneità è possibile. Purtroppo avviene una registrazione completa e ciò rallenta il processo.

Esempi

R. Esempio semplice di dwloader

L'esempio seguente mostra l'avvio del Caricatore con solo le opzioni necessarie selezionate. Altre opzioni vengono ricavate dal file di configurazione globale, loadparamfile.txt.

Esempio di autenticazione con SQL Server:

--Load over Ethernet  
dwloader.exe -S 10.192.63.148 -U mylogin -P 123jkl -f /configfiles/loadparamfile.txt  
  
--Load over InfiniBand to appliance named MyPDW  
dwloader.exe -S MyPDW-SQLCTL01 -U mylogin -P 123jkl -f /configfiles/loadparamfile.txt  

Lo stesso esempio con l'autenticazione di Windows.

--Load over Ethernet  
dwloader.exe -S 10.192.63.148 -W -f /configfiles/loadparamfile.txt  
  
--Load over InfiniBand to appliance named MyPDW  
dwloader.exe -S MyPDW-SQLCTL01 -W -f /configfiles/loadparamfile.txt  

Esempio che usa gli argomenti per un file di origine e un file di errore.

--Load over Ethernet  
dwloader.exe -U mylogin -P 123jkl -S 10.192.63.148  -i C:\SQLData\AWDimEmployees.csv -T AdventureWorksPDW2012.dbo.DimEmployees -R C:\SQLData\LoadErrors  

B. Caricare dati in una tabella AdventureWorks

L'esempio seguente fa parte di uno script batch che carica i dati in AdventureWorksPDW2012. Per visualizzare lo script completo, aprire il file aw_create.bat fornito con il pacchetto di installazione AdventureWorksPDW2012 .

Il frammento di script seguente usa dwloader per caricare i dati nelle tabelle DimAccount e DimCurrency. Questo script usa un indirizzo Ethernet. Se venisse usato InfiniBand, il server sarebbe <appliance_name>-SQLCTL01.

set server=10.193.63.134  
set user=<MyUser>  
set password=<MyPassword>  
  
set schema=AdventureWorksPDW2012.dbo  
set load="C:\Program Files\Microsoft SQL Server Parallel Data Warehouse\100\dwloader.exe"  
set mode=reload  
  
--Loads data into the AdventureWorksPDW2012.dbo.DimAccount table  
--Source data is stored in the file DimAccount.txt,   
--which is in the current directory.  
  
set t1=DimAccount  
%load% -S %server% -E -M %mode% -e Utf16 -i .\%t1%.txt -T %schema%.%t1% -R %t1%.bad -t "|" -r \r\n -U %user% -P %password%   
  
--Loads data from the DimCurrency.txt file into  
--AdventureWorksPDW2012.dbo.DimCurrency  
set t1=DimCurrency  
%load% -S %server% -E -M %mode% -e Utf16 -i .\%t1%.txt -T %schema%.%t1% -R %t1%.bad -t "|" -r \r\n -U %user% -P %password%  

Di seguito è riportato il DDL per la tabella DimAccount.

CREATE TABLE DimAccount(  
AccountKey int NOT NULL,  
ParentAccountKey int,  
AccountCodeAlternateKey int,  
ParentAccountCodeAlternateKey int,  
AccountDescription nvarchar(50),  
AccountType nvarchar(50),  
Operator nvarchar(50),  
CustomMembers nvarchar(300),  
ValueType nvarchar(50),  
CustomMemberOptions nvarchar(200))  
with (CLUSTERED INDEX(AccountKey),  
DISTRIBUTION = REPLICATE);  

Di seguito è riportato un esempio del file di dati, DimAccount.txt, che contiene i dati da caricare nella tabella DimAccount.

--Sample of data in the DimAccount.txt load file.  
  
1||1||Balance Sheet||~||Currency|  
2|1|10|1|Assets|Assets|+||Currency|  
3|2|110|10|Current Assets|Assets|+||Currency|  
4|3|1110|110|Cash|Assets|+||Currency|  
5|3|1120|110|Receivables|Assets|+||Currency|  
6|5|1130|1120|Trade Receivables|Assets|+||Currency|  
7|5|1140|1120|Other Receivables|Assets|+||Currency|  
8|3|1150|110|Allowance for Bad Debt|Assets|+||Currency|  
9|3|1160|110|Inventory|Assets|+||Currency|  
10|9|1162|1160|Raw Materials|Assets|+||Currency|  
11|9|1164|1160|Work in Process|Assets|+||Currency|  
12|9|1166|1160|Finished Goods|Assets|+||Currency|  
13|3|1170|110|Deferred Taxes|Assets|+||Currency|  

C. Caricare dati dalla riga di comando

Lo script nell'esempio B può essere sostituito immettendo tutti i parametri nella riga di comando, come illustrato nell'esempio seguente.

C:\Program Files\Microsoft SQL Server Parallel Data Warehouse\100\dwloader.exe -S <Control node IP> -E -M reload -e UTF16 -i .\DimAccount.txt -T AdventureWorksPDW2012.dbo.DimAccount -R DimAccount.bad -t "|" -r \r\n -U <login> -P <password>  

Descrizione dei parametri della riga di comando:

  • C:\Programmi\Microsoft SQL Server Parallel Data Warehouse\100\dwloader.exe è il percorso installato di dwloader.exe.

  • -S è seguito dall'indirizzo IP del nodo di controllo.

  • -E specifica di caricare stringhe vuote come NULL.

  • -M caricamento specifica di troncare la tabella di destinazione prima di inserire i dati di origine.

  • -e UTF16 indica che il file di origine usa il tipo di codifica dei caratteri little endian.

  • -i .\DimAccount.txt specifica che i dati si trovano in un file denominato DimAccount.txt che esiste nella directory corrente.

  • -T AdventureWorksPDW2012.dbo.DimAccount specifica il nome della tabella in 3 parti per ricevere i dati.

  • -R DimAccount.bad specifica che le righe che non caricate verranno scritte in un file denominato DimAccount.bad.

  • -t "|" indica che i campi nel file di input, DimAccount.txt, sono separati con il carattere pipe.

  • -r \r\n specifica che ogni riga in DimAccount.txt termina con un ritorno a capo e un carattere di avanzamento riga.

  • -U <login_name> -P <password> specifica il login e la password di accesso per l'account che dispone delle autorizzazioni per eseguire il caricamento.