Share via


chargeur de ligne de commande dwloader pour Parallel Data Warehouse

dwloader est un outil en ligne de commande PDW (Parallel Data Warehouse) qui charge des lignes de table en bloc dans une table existante. Lors du chargement de lignes, vous pouvez ajouter toutes les lignes à la fin de la table (mode d’ajout ou mode fastappend), ajouter de nouvelles lignes et mettre à jour des lignes existantes (mode upsert) ou supprimer toutes les lignes existantes avant le chargement, puis insérer toutes les lignes dans une table vide (mode rechargement).

Processus de chargement des données

  1. Préparer les données source.

    Utilisez votre propre processus ETL pour créer les données sources que vous souhaitez charger. Les données sources doivent être mises en forme pour correspondre au schéma de la table de destination. Stockez les données sources dans un ou plusieurs fichiers texte et copiez les fichiers texte dans le même répertoire sur votre serveur de chargement. Pour plus d’informations sur le serveur de chargement, consultez Acquérir et configurer un serveur de chargement

  2. Préparez les options de chargement.

    Déterminez les options de chargement que vous utiliserez. Stockez les options de chargement dans un fichier de configuration. Copiez le fichier de configuration vers un emplacement local sur votre serveur de chargement. Les options de configuration dwloader sont décrites dans cette rubrique.

  3. Préparez les options d’échec de charge.

    Déterminez la façon dont vous souhaitez que dwloader gère les lignes qui ne parviennent pas à se charger. Pour effectuer la charge, dwloader charge d’abord les données dans une table intermédiaire, puis transfère les données à la table de destination. Lorsque le chargeur charge des données dans la table intermédiaire, il suit le nombre de lignes qui ne parviennent pas à se charger. Par exemple, les lignes qui ne sont pas correctement mises en forme ne sont pas chargées. Les lignes ayant échoué sont copiées dans un fichier de rejet. Par défaut, la charge abandonne après le premier rejet, sauf si vous spécifiez un seuil de rejet différent.

  4. Installez dwloader.

    Installez dwloader sur le serveur de chargement s’il n’est pas déjà installé.

  1. Exécutez dwloader.

    Connectez-vous au serveur de chargement et exécutez le fichier exécutable dwloader.exe avec les options de ligne de commande appropriées.

  2. Vérifier les résultats.

    Vous pouvez vérifier le fichier de lignes ayant échoué (spécifié avec -R) pour voir si des lignes n’ont pas pu être chargées. Si ce fichier est vide, toutes les lignes sont chargées avec succès. dwloader est transactionnel. Par conséquent, si une étape échoue (autre que les lignes rejetées), toutes les étapes retournent à leur état initial.

Syntaxe

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 ]   
}  

Arguments

-h
Affiche des informations d’aide simples sur l’utilisation du chargeur. L’aide s’affiche uniquement si aucun autre paramètre de ligne de commande n’est spécifié.

-Ulogin_name
Connexion d’authentification SQL Server valide avec les autorisations appropriées pour effectuer la charge.

-Ppassword
Mot de passe d’une login_name d’authentification SQL Server.

-W
Utiliser l'authentification Windows. (Aucun login_name ou mot de passe requis.)

-fparameter_file_name
Utilisez un fichier de paramètres, parameter_file_name, à la place des paramètres de ligne de commande. parameter_file_name peut contenir n’importe quel paramètre de ligne de commande, sauf user_name et mot de passe. Si un paramètre est spécifié sur la ligne de commande et dans le fichier de paramètres, la ligne de commande remplace le paramètre de fichier.

Le fichier de paramètres contient un paramètre, sans le - préfixe, par ligne.

Exemples :

rt=percentage

rv=25

-Starget_appliance
Spécifie l’appliance SQL Server PDW qui recevra les données chargées.

Pour les connexions Infiniband, target_appliance est spécifié comme <appliance-name-SQLCTL01>. Pour configurer cette connexion nommée, consultez Configurer les cartes réseau InfiniBand.

Pour les connexions Ethernet, target_appliance est l’adresse IP du cluster de nœuds de contrôle.

En cas d’omission, dwloader est défini par défaut sur la valeur spécifiée lors de l’installation de dwloader.

-Ttarget_database_name.[schéma].Table_name
Nom en trois parties de la table de destination.

-Isource_data_location
Emplacement d’un ou de plusieurs fichiers sources à charger. Chaque fichier source doit être un fichier texte ou un fichier texte compressé avec gzip. Un seul fichier source peut être compressé dans chaque fichier gzip.

Pour mettre en forme un fichier source :

  • Le fichier source doit être mis en forme conformément aux options de chargement.

  • Chaque ligne d’un fichier source contient les données d’une ligne de table. Les données sources doivent correspondre au schéma de la table de destination. L’ordre des colonnes et les types de données doivent également correspondre. Chaque champ de la ligne représente une colonne dans la table de destination.

  • Par défaut, les champs sont de longueur variable et séparés par un délimiteur. Pour spécifier le type de délimiteur, utilisez les <options de ligne de commande variable_length_column_options> . Pour spécifier des champs de longueur fixe, utilisez les <options de ligne de commande fixed_width_column_options> .

Pour spécifier l’emplacement des données sources :

  • L’emplacement des données sources peut être un chemin réseau ou un chemin local vers un répertoire sur le serveur de chargement.

  • Pour spécifier tous les fichiers d’un répertoire, entrez le chemin d’accès au répertoire suivi du caractère générique *. Le chargeur ne charge pas de fichiers à partir de sous-répertoires qui se trouvent dans l’emplacement de données source. Erreurs de chargeur lorsqu’un répertoire existe dans un fichier gzip.

  • Pour spécifier certains des fichiers d’un répertoire, utilisez une combinaison de caractères et de caractères génériques *.

Pour charger plusieurs fichiers avec une seule commande :

  • Tous les fichiers doivent exister dans le même répertoire.

  • Les fichiers doivent être tous les fichiers texte, tous les fichiers gzip ou une combinaison de fichiers texte et gzip.

  • Aucun des fichiers ne peut contenir d’informations d’en-tête.

  • Tous les fichiers doivent utiliser le même type d’encodage de caractères. Voir l’option -e.

  • Tous les fichiers doivent être chargés dans la même table.

  • Tous les fichiers sont concaténés et chargés comme s’ils sont un fichier, et les lignes rejetées sont redirigées vers un seul fichier de rejet.

Exemples :

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

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

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

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

  • -i \\loadserver\loadserver\load\load\daily\*

-Rload_failure_file_name
En cas d’échecs de chargement, dwloader stocke la ligne qui n’a pas pu être chargée et la description de l’échec les informations d’échec dans un fichier nommé load_failure_file_name. Si ce fichier existe déjà, dwloader remplace le fichier existant. load_failure_file_name est créé lorsque la première défaillance se produit. Si toutes les lignes sont chargées correctement, load_failure_file_name n’est pas créé.

-fhnumber_header_rows
Nombre de lignes (lignes) à ignorer au début de source_data_file_name. Par défaut, il s’agit de 0.

<variable_length_column_options>
Options d’un source_data_file_name qui a des colonnes de longueur variable délimitées par des caractères. Par défaut, source_data_file_name contient des caractères ASCII dans des colonnes de longueur variable.

Pour les fichiers ASCII, les VALEURS NULL sont représentées en plaçant des délimiteurs consécutivement. Par exemple, dans un fichier délimité par un canal (« | »), une valeur NULL est indiquée par « || ». Dans un fichier délimité par des virgules, une valeur NULL est indiquée par « , ». En outre, l’option -E (--emptyStringAsNull) doit être spécifiée. Pour plus d’informations sur -E, voir ci-dessous.

-echaracter_encoding
Spécifie un type d’encodage de caractères pour que les données soient chargées à partir du fichier de données. Les options sont ASCII (par défaut), UTF8, UTF16 ou UTF16BE, où UTF16 est peu endian et UTF16BE est big endian. Ces options ne respectent pas la casse.

-tfield_delimiter
Délimiteur pour chaque champ (colonne) dans la ligne. Le délimiteur de champ est un ou plusieurs de ces caractères d’échappement ASCII ou valeurs hexadécimaux ASCII.

Nom  Caractère d'échappement Caractère hexadécimal
Onglet \t 0x09
Retour chariot (CR) \r 0x0d
Flux de ligne (LF) \n 0x0A
CRLF \r\n 0x0d0x0a
Comma ',' 0x2c
Guillemet double \" 0x22
Guillemet simple \' 0x27

Pour spécifier le caractère de canal sur la ligne de commande, placez-le entre guillemets doubles , « | ». Cela évite une mauvaise interprétation par l’analyseur de ligne de commande. D’autres caractères sont placés entre guillemets simples.

Exemples :

-t « | »

-t ' '

-t 0x0a

-t \t

-t '~|~'

-rrow_delimiter
Délimiteur pour chaque ligne du fichier de données source. Le délimiteur de ligne est une ou plusieurs valeurs ASCII.

Pour spécifier un retour chariot (CR), un saut de ligne (LF) ou un caractère tabulation en tant que délimiteur, vous pouvez utiliser les caractères d’échappement (\r, \n, \t) ou leurs valeurs hexadécimaux (0x, 0d, 09). Pour spécifier d’autres caractères spéciaux en tant que délimiteurs, utilisez leur valeur hexadécimal.

Exemples de CR+LF :

-r \r\n

-r 0x0d0x0a

Exemples de CR :

-r \r

-r 0x0d

Exemples de LF :

-r \n

-r 0x0a

Un LF est requis pour Unix. Un CR est requis pour Windows.

-sstring_delimiter
Délimiteur pour le champ de type de données de chaîne d’un fichier d’entrée délimité par du texte. Le délimiteur de chaîne est une ou plusieurs valeurs ASCII. Il peut être spécifié en tant que caractère (par exemple, -s *) ou en tant que valeur hexadécimal (par exemple, -s 0x22 pour un guillemet double).

Exemples :

-s *

-s 0x22

< fixed_width_column_options>
Options d’un fichier de données source qui a des colonnes de longueur fixe. Par défaut, source_data_file_name contient des caractères ASCII dans des colonnes de longueur variable.

Les colonnes de largeur fixe ne sont pas prises en charge lorsque -e est UTF8.

-wfixed_width_config_file
Chemin d’accès et nom du fichier de configuration qui spécifie le nombre de caractères dans chaque colonne. Chaque champ doit être spécifié.

Ce fichier doit résider sur le serveur de chargement. Le chemin d’accès peut être un chemin UNC, relatif ou absolu. Chaque ligne de fixed_width_config_file contient le nom d’une colonne et le nombre de caractères de cette colonne. Il existe une ligne par colonne, comme suit, et l’ordre dans le fichier doit correspondre à l’ordre dans la table de destination :

=column_name num_chars

=column_name num_chars

Exemple de fichier de configuration de largeur fixe :

SalesCode=3

SalesID=10

Exemples de lignes dans source_data_file_name :

230Shirts0056

320Towels1356

Dans l’exemple précédent, la première ligne chargée aura SalesCode='230' et SalesID='Shirts0056'. La deuxième ligne chargée aura SalesCode='320' et SaleID='Towels1356'.

Pour plus d’informations sur la gestion des espaces de début et de fin ou de la conversion de type de données en mode largeur fixe, consultez les règles de conversion de type de données pour dwloader.

-echaracter_encoding
Spécifie un type d’encodage de caractères pour que les données soient chargées à partir du fichier de données. Les options sont ASCII (par défaut), UTF8, UTF16 ou UTF16BE, où UTF16 est peu endian et UTF16BE est big endian. Ces options ne respectent pas la casse.

Les colonnes de largeur fixe ne sont pas prises en charge lorsque -e est UTF8.

-rrow_delimiter
Délimiteur pour chaque ligne du fichier de données source. Le délimiteur de ligne est une ou plusieurs valeurs ASCII.

Pour spécifier un retour chariot (CR), un saut de ligne (LF) ou un caractère tabulation en tant que délimiteur, vous pouvez utiliser les caractères d’échappement (\r, \n, \t) ou leurs valeurs hexadécimaux (0x, 0d, 09). Pour spécifier d’autres caractères spéciaux en tant que délimiteurs, utilisez leur valeur hexadécimal.

Exemples de CR+LF :

-r \r\n

-r 0x0d0x0a

Exemples de CR :

-r \r

-r 0x0d

Exemples de LF :

-r \n

-r 0x0a

Un LF est requis pour Unix. Un CR est requis pour Windows.

-D { ymd | ydm | mdy | myd | dmy | dym | dym | custom_date_format }
Spécifie l’ordre du mois (m), du jour (d) et de l’année (y) pour tous les champs datetime dans le fichier d’entrée. L’ordre par défaut est ymd. Pour spécifier plusieurs formats d’ordre pour le même fichier source, utilisez l’option -dt.

ymd | Dmy
ydm et dmy autorisent les mêmes formats d’entrée. Les deux permettent à l’année d’être au début ou à la fin de la date. Par exemple, pour les formats de date ydm et dmy , vous pouvez avoir 2013-02-03 ou 02-03-2013 dans le fichier d’entrée.

ydm
Vous ne pouvez charger l’entrée mise en forme que ydm dans les colonnes de type de données datetime et smalldatetime. Vous ne pouvez pas charger les valeurs ydm dans une colonne du type de données datetime2, date ou datetimeoffset.

mja
mdy autorise l’année <>des virgules><du jour><de l’espace><><mensuel.

Exemples de données d’entrée mdy pour le 1er janvier 1975 :

  • 1er janvier 1975

  • 01 janvier 75

  • Jan/1/75

  • 01011975

maj
Exemples de fichiers d’entrée pour le 04 mars 2010 : 03-2010-04, 3/2010/4

jam
Exemples de fichiers d’entrée pour le 04 mars 2010 : 04-2010-03, 4/2010/3

custom_date_format
custom_date_format est un format de date personnalisé (par exemple, MM/jj/aaaa) et inclus uniquement pour la compatibilité descendante. dwloader n’applique pas le format de date personnalisé. Au lieu de cela, lorsque vous spécifiez un format de date personnalisé, dwloader le convertit en paramètre correspondant de ymd, ydm, mdy, myd, dym ou dmy.

Par exemple, si vous spécifiez -D MM/dd/aaaa, dwloader s’attend à ce que toutes les entrées de date soient ordonnées avec le mois en premier, puis le jour, puis l’année (mdy). Il n’applique pas 2 mois de caractères, 2 chiffres jours et 4 chiffres, comme spécifié par le format de date personnalisé. Voici quelques exemples de manière dont les dates peuvent être mises en forme dans le fichier d’entrée lorsque le format de date est -D MM/dd/aaaa : 01/02/2013, Jan.02.2013, 1/2/2013

Pour obtenir des informations de mise en forme plus complètes, consultez les règles de conversion de type de données pour dwloader.

-dtdatetime_format_file
Chaque format datetime est spécifié dans un fichier nommé datetime_format_file. Contrairement aux paramètres de ligne de commande, les paramètres de fichier qui incluent des espaces ne doivent pas être placés entre guillemets doubles. Vous ne pouvez pas modifier le format datetime lorsque vous chargez des données. Le fichier de données source et sa colonne correspondante dans la table de destination doivent avoir le même format.

Chaque ligne contient le nom d’une colonne dans la table de destination et son format datetime.

Exemples :

LastReceiptDate=ymd

ModifiedDate=dym

-dstaging_database_name
Nom de la base de données qui contiendra la table intermédiaire. La valeur par défaut est la base de données spécifiée avec l’option -T, qui est la base de données de la table de destination. Pour plus d’informations sur l’utilisation d’une base de données intermédiaire, consultez Créer la base de données intermédiaire.

-Mload_mode_option
Spécifie s’il faut ajouter, upsert ou recharger des données. Le mode par défaut est ajouté.

append
Le chargeur insère des lignes à la fin des lignes existantes dans la table de destination.

fastappend
Le chargeur insère des lignes directement, sans utiliser de table temporaire, à la fin des lignes existantes dans la table de destination. fastappend nécessite l’option multi-transactions (-m). Impossible de spécifier une base de données intermédiaire lors de l’utilisation de fastappend. Il n’existe aucune restauration avec fastappend, ce qui signifie que la récupération à partir d’une charge ayant échoué ou abandonnée doit être gérée par votre propre processus de charge.

upsert -Kmerge_column [,...n ]
Le chargeur utilise l’instruction De fusion SQL Server pour mettre à jour les lignes existantes et insérer de nouvelles lignes.

L’option -K spécifie la colonne ou les colonnes sur lesquelles baser la fusion. Ces colonnes forment une clé de fusion, qui doit représenter une ligne unique. Si la clé de fusion existe dans la table de destination, la ligne est mise à jour. Si la clé de fusion n’existe pas dans la table de destination, la ligne est ajoutée.

Pour les tables distribuées par hachage, la clé de fusion doit être ou inclure la colonne de distribution.

Pour les tables répliquées, la clé de fusion est la combinaison d’une ou plusieurs colonnes. Ces colonnes sont spécifiées en fonction des besoins de l’application.

Plusieurs colonnes doivent être séparées par des virgules sans espaces, ou séparées par des virgules avec des espaces et placées entre guillemets simples.

Si deux lignes de la table source ont des valeurs de clé de fusion correspondantes, leurs lignes respectives doivent être identiques.

reload
Le chargeur tronque la table de destination avant d’insérer les données sources.

-bbatchsize
Recommandé uniquement pour une utilisation par le support Microsoft, batchsize est la taille de lot SQL Server pour la copie en bloc effectuée par DMS dans des instances SQL Server sur les nœuds de calcul. Lorsque le traitement par lots est spécifié, SQL Server PDW remplace la taille de charge du lot calculée dynamiquement pour chaque charge.

À compter de SQL Server 2012 PDW, le nœud de contrôle calcule dynamiquement une taille de lot pour chaque chargement par défaut. Ce calcul automatique est basé sur plusieurs paramètres tels que la taille de mémoire, le type de table cible, le schéma de table cible, le type de chargement, la taille de fichier et la classe de ressources de l’utilisateur.

Par exemple, si le mode de chargement est FASTAPPEND et que la table a un index columnstore cluster, SQL Server PDW tente par défaut d’utiliser une taille de lot de 1 048 576 afin que les rowgroups deviennent FERMÉs et chargent directement dans le columnstore sans passer par le magasin delta. Si la mémoire n’autorise pas la taille du lot de 1 048 576, dwloader choisit un lot plus petit.

Si le type de chargement est FASTAPPEND, le traitement par lots s’applique au chargement de données dans la table; sinon , batchsize s’applique au chargement de données dans la table intermédiaire.

<reject_options>
Spécifie les options permettant de déterminer le nombre d’échecs de chargement autorisés par l’chargeur. Si les échecs de charge dépassent le seuil, le chargeur s’arrête et ne valide aucune ligne.

-rt { valeur | pourcentage }
Spécifie si l’option -reject_value dans l’option -rvreject_value est un nombre littéral de lignes (valeur) ou un taux d’échec (pourcentage). La valeur par défaut est la valeur.

L’option de pourcentage est un calcul en temps réel qui se produit à intervalles en fonction de l’option -rs.

Par exemple, si le chargeur tente de charger 100 lignes et 25 échouent et 75 réussissent, le taux d’échec est de 25 %.

-rvreject_value
Spécifie le nombre ou le pourcentage de rejet de ligne à autoriser avant d’arrêter la charge. L’option -rt détermine si reject_value fait référence au nombre de lignes ou au pourcentage de lignes.

La reject_value par défaut est 0.

Lorsqu’il est utilisé avec la valeur -rt, le chargeur arrête la charge lorsque le nombre de lignes rejeté dépasse reject_value.

Quand vous utilisez -rt pourcentage, le chargeur calcule le pourcentage à intervalles (option -rs). Par conséquent, le pourcentage de lignes ayant échoué peut dépasser reject_value.

-rsreject_sample_size
Utilisé avec l’option -rt percentage pour spécifier les vérifications de pourcentage incrémentiel. Par exemple, si reject_sample_size est de 1 000, le chargeur calcule le pourcentage de lignes ayant échoué après avoir tenté de charger 1 000 lignes. Il recalcule le pourcentage de lignes ayant échoué après avoir tenté de charger chaque ligne supplémentaire de 1 000 lignes.

-c
Supprime les espaces blancs du côté gauche et droit des champs char, nchar, varchar et nvarchar. Convertit chaque champ qui contient uniquement des espaces blancs en chaîne vide.

Exemples :

' ' est tronqué à ''

' abc ' est tronqué en 'abc'

Lorsque -c est utilisé avec -E, l’opération -E se produit en premier. Les champs qui contiennent uniquement des espaces blancs sont convertis en chaîne vide, et non en NULL.

-E
Convertissez des chaînes vides en NULL. La valeur par défaut consiste à ne pas effectuer ces conversions.

-m
Utilisez le mode multi-transaction pour la deuxième phase de chargement ; lors du chargement de données de la table intermédiaire dans une table distribuée.

Avec -m, SQL Server PDW effectue et valide les charges en parallèle. Cela s’effectue beaucoup plus rapidement que le mode de chargement par défaut, mais n’est pas sécurisé par transaction.

Sans -m, SQL Server PDW effectue et valide les charges en série dans les distributions au sein de chaque nœud de calcul, et simultanément sur les nœuds de calcul. Cette méthode est plus lente que le mode multi-transaction, mais elle est sécurisée par transaction.

-m est facultatif pour l’ajout, le rechargement et l’upsert.

-m est requis pour fastappend.

-m ne peut pas être utilisé avec des tables répliquées.

-m s’applique uniquement à la deuxième phase de chargement. Elle ne s’applique pas à la première phase de chargement ; chargement de données dans la table intermédiaire.

Il n’existe aucune restauration avec le mode multi-transaction, ce qui signifie que la récupération à partir d’une charge ayant échoué ou abandonnée doit être gérée par votre propre processus de charge.

Nous vous recommandons d’utiliser -m uniquement lors du chargement dans une table vide, afin que vous puissiez récupérer sans perte de données. Pour récupérer à partir d’un échec de charge : supprimez la table de destination, résolvez le problème de chargement, recréez la table de destination et réexécutez la charge.

-N
Vérifiez que l’appliance cible dispose d’un certificat SQL Server PDW valide auprès d’une autorité approuvée. Utilisez-le pour vous assurer que vos données ne sont pas détournées par un attaquant et envoyées à un emplacement non autorisé. Le certificat doit déjà être installé sur l’appliance. La seule méthode prise en charge pour installer le certificat est que l’administrateur de l’appliance l’installe à l’aide de l’outil Configuration Manager. Demandez à votre administrateur d’appliance si vous ne savez pas si l’appliance dispose d’un certificat approuvé installé.

-se
Ignorez le chargement de fichiers vides. Cela ignore également la décompression des fichiers gzip vides.

-L
Disponible avec la mise à jour CU7.4, spécifie la longueur maximale de ligne (en octets) qui peut être chargée. Les valeurs valides sont des entiers compris entre 32768 et 33554432. Utilisez uniquement si nécessaire pour charger des lignes volumineuses (supérieures à 32 Ko), car cela alloue plus de mémoire sur le client et le serveur.

Codet de retour

0 (réussite) ou autre valeur entière (échec)

Dans une fenêtre de commande ou un fichier de commandes, utilisez errorlevel cette option pour afficher le code de retour. Par exemple :

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

Lorsque vous utilisez PowerShell, utilisez $LastExitCode.

Autorisations

Nécessite l’autorisation LOAD et les autorisations applicables (INSERT, UPDATE, DELETE) sur la table de destination. Nécessite l’autorisation CREATE (pour la création d’une table temporaire) sur la base de données intermédiaire. Si une base de données intermédiaire n’est pas utilisée, l’autorisation CREATE est requise sur la base de données de destination.

Remarques d'ordre général

Pour plus d’informations sur les conversions de types de données lors du chargement avec dwloader, consultez les règles de conversion de type de données pour dwloader.

Si un paramètre inclut un ou plusieurs espaces, placez le paramètre entre guillemets doubles.

Vous devez exécuter le chargeur à partir de son emplacement installé. L’exécutable dwloader est préinstallé avec l’appliance et se trouve dans le répertoire C:\Program Files\Microsoft SQL Server Data Warehouse\DWLoader.

Vous pouvez remplacer un paramètre spécifié dans l’option fichier de paramètres (-f) en le spécifiant comme paramètre de ligne de commande.

Vous pouvez exécuter plusieurs instances du chargeur simultanément. Le nombre maximal d’instances de chargeur est préconfiguré et ne peut pas être modifié.

Les données chargées peuvent nécessiter plus ou moins d’espace sur l’appliance que dans l’emplacement source. Vous pouvez effectuer des importations de test avec des sous-ensembles de données pour estimer la consommation de disque.

Bien que dwloader soit un processus de transaction et restaure correctement en cas d’échec, il ne peut pas être restauré une fois la charge en bloc terminée. Pour annuler un processus dwloader actif, tapez Ctrl+C.

Limitations et restrictions

La taille totale de toutes les charges se produisant simultanément doit être inférieure à LOG_SIZE pour la base de données, et nous vous recommandons de réduire la taille totale de toutes les charges simultanées est inférieure à 50 % du LOG_SIZE. Pour atteindre cette limitation de taille, vous pouvez fractionner de grandes charges en plusieurs lots. Pour plus d’informations sur LOG_SIZE, consultez CREATE DATABASE

Lors du chargement de plusieurs fichiers avec une seule commande de chargement, toutes les lignes rejetées sont écrites dans le même fichier de rejet. Le fichier de rejet n’affiche pas le fichier d’entrée qui contient chaque ligne rejetée.

La chaîne vide ne doit pas être utilisée comme délimiteur. Lorsqu’une chaîne vide est utilisée comme délimiteur de ligne, la charge échoue. Lorsqu’elle est utilisée comme délimiteur de colonne, la charge ignore le délimiteur et continue d’utiliser le séparateur par défaut « | » comme délimiteur de colonne. Lorsqu’elle est utilisée comme délimiteur de chaîne, la chaîne vide est ignorée et le comportement par défaut est appliqué.

Comportement de verrouillage

Le comportement de verrouillage dwloader varie en fonction de la load_mode_option.

  • append - Append est l’option recommandée et la plus courante. Ajouter charge des données dans une table intermédiaire. Le verrouillage est décrit en détail ci-dessous.

  • ajout rapide : l’ajout rapide se charge directement dans la table finale prenant un verrou de table ExclusiveUpdate et est le seul mode qui n’utilise pas de table intermédiaire.

  • rechargement : recharge les données dans une table intermédiaire et nécessite un verrou exclusif sur la table intermédiaire et la table finale. Le rechargement n’est pas recommandé pour les opérations simultanées.

  • upsert : Upsert charge des données dans une table intermédiaire, puis effectue une opération de fusion de la table intermédiaire vers la table finale. Upsert ne nécessite pas de verrous exclusifs sur la table finale. Les performances peuvent varier lors de l’utilisation d’upsert. Testez le comportement dans votre environnement.

Comportement de verrouillage

Verrouillage du mode Ajout

L’ajout peut être exécuté en mode multi transactionnel (à l’aide de l’argument -m), mais il n’est pas sécurisé par transaction. Par conséquent, l’ajout doit être utilisé comme opération transactionnelle (sans utiliser l’argument -m). Malheureusement, pendant l’opération INSERT-SELECT finale, le mode transactionnel est actuellement environ six fois plus lent que le mode multi transactionnel.

Le mode d’ajout charge les données en deux phases. La phase 1 charge les données du fichier source dans une table intermédiaire simultanément (la fragmentation peut se produire). La phase 2 charge les données de la table intermédiaire vers la table finale. La deuxième phase effectue une INSERTION INTO... OPÉRATION SELECT WITH (TABLOCK). Le tableau suivant montre le comportement de verrouillage sur la table finale et le comportement de journalisation lors de l’utilisation du mode d’ajout :

Type de table Transactions multiples
Mode (-m)
La table est vide Accès concurrentiel pris en charge Journalisation
Segment de mémoire (heap) Oui Oui Oui Minimal
Segment de mémoire (heap) Oui Non Oui Minimal
Segment de mémoire (heap) Non Oui Non Minimal
Segment de mémoire (heap) Non Non Non Minimal
Cl Oui Oui Non Minimal
Cl Oui Non Oui Complet
Cl Non Oui Non Minimal
Cl Non Non Oui Complet

Le tableau ci-dessus montre dwloader à l’aide du chargement en mode d’ajout dans un tas ou une table d’index cluster (CI), avec ou sans l’indicateur multi transactionnel, et le chargement dans une table vide ou dans une table non vide. Le comportement de verrouillage et de journalisation de chaque combinaison de charge est affiché dans le tableau. Par exemple, le chargement (2e) de la phase avec le mode d’ajout dans un index cluster sans mode multi transactionnel et dans une table vide aura la création d’un verrou exclusif sur la table et la journalisation est minimale. Cela signifie qu’un client ne pourra pas charger (2ème) phase et interroger simultanément dans une table vide. Toutefois, lors du chargement avec la même configuration dans une table non vide, PDW n’émet pas de verrou exclusif sur la table et la concurrence est possible. Malheureusement, la journalisation complète se produit, ce qui ralentit le processus.

Examples

A. Exemple de dwloader simple

L’exemple suivant montre l’initiation du chargeur avec uniquement les options requises sélectionnées. D’autres options sont extraites du fichier de configuration global, loadparamfile.txt.

Exemple utilisant l’authentification 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  

Le même exemple utilise l’authentification 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  

Exemple utilisant des arguments pour un fichier source et un fichier d’erreur.

--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. Charger des données dans une table AdventureWorks

L’exemple suivant fait partie d’un script de traitement par lots qui charge des données dans AdventureWorksPDW2012. Pour afficher le script complet, ouvrez le fichier aw_create.bat fourni avec le package d’installation AdventureWorksPDW2012 .

L’extrait de code de script suivant utilise dwloader pour charger des données dans les tables DimAccount et DimCurrency. Ce script utilise une adresse Ethernet. S’il utilise InfiniBand, le serveur serait <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%  

Voici la DDL pour la table 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);  

Voici un exemple de fichier de données, DimAccount.txt, qui contient des données à charger dans la table 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. Charger des données à partir de la ligne de commande

Le script de l’exemple B peut être remplacé en entrant tous les paramètres sur la ligne de commande, comme illustré dans l’exemple suivant.

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>  

Description des paramètres de ligne de commande :

  • C:\Program Files\Microsoft SQL Server Parallel Data Warehouse\100\dwloader.exe est l’emplacement installé de dwloader.exe.

  • -S est suivi de l’adresse IP du nœud de contrôle.

  • -E spécifie de charger des chaînes vides en tant que NULL.

  • -M recharge spécifie de tronquer la table de destination avant d’insérer les données sources.

  • -e UTF16 indique que le fichier source utilise le type d’encodage de caractères peu endian.

  • -i .\DimAccount.txt spécifie que les données se trouvent dans un fichier appelé DimAccount.txt qui existe dans le répertoire actif.

  • -T AdventureWorksPDW2012.dbo.DimAccount spécifie le nom en 3 parties de la table à recevoir les données.

  • -R DimAccount.bad spécifie les lignes qui ne sont pas chargées sont écrites dans un fichier appelé DimAccount.bad.

  • -t « | » indique les champs du fichier d’entrée, DimAccount.txt, sont séparés par le caractère de canal.

  • -r \r\n spécifie chaque ligne dans DimAccount.txt se termine par un retour chariot et un caractère de flux de ligne.

  • -U <login_name> -P <password spécifie la connexion et le mot de passe> de la connexion disposant des autorisations nécessaires pour effectuer la charge.