Chargeur de ligne de commande dwloader pour Parallel Data Warehouse
dwloader est un outil en ligne de commande de Parallel Data Warehouse (PDW) qui charge des lignes de table en bloc dans une table existante. Lors du chargement des lignes, vous pouvez ajouter toutes les lignes à la fin de la table (mode append ou mode fastappend), ajouter de nouvelles lignes et mettre à jour les lignes existantes (mode upsert), ou supprimer toutes les lignes existantes avant le chargement, puis insérer toutes les lignes dans une table vide (mode reload).
Processus de chargement des données
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 formatées 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 Loading Server.
Préparez les options de chargement.
Décidez des options de chargement que vous utiliserez. Stockez les options de chargement dans un fichier de configuration. Copiez le fichier de configuration dans un emplacement local de votre serveur de chargement. Les options de configuration de dwloader sont décrites dans cette rubrique.
Préparez les options de défaillance de chargement.
Décidez de la manière dont dwloader doit gérer les lignes qui ne se chargent pas. Pour effectuer le chargement, dwloader charge d'abord les données dans une table d'attente, puis les transfère dans la table de destination. Au fur et à mesure que le chargeur charge des données dans la table de mise en lots, il suit le nombre de lignes qui ne parviennent pas à être chargées. Par exemple, les lignes qui ne sont pas formatées correctement ne seront pas chargées. Les lignes qui n’ont pas été chargées sont copiées dans un fichier de rejet. Par défaut, le chargement s'interrompt après le premier rejet, sauf si vous spécifiez un seuil de rejet différent.
Installez dwloader.
Installez dwloader sur le serveur de chargement s'il n'est pas déjà installé.
Exécutez dwloader.
Connectez-vous au serveur de chargement et exécutez l'exécutable dwloader.exe avec les options de ligne de commande appropriées.
Vérifier les résultats.
Vous pouvez consulter le fichier des lignes ayant échoué (spécifié avec -R) pour voir si des lignes n'ont pas été chargées. Si ce fichier est vide, toutes les lignes ont été chargées avec succès. dwloader est transactionnel, donc si une étape échoue (autre que les lignes rejetées), toutes les étapes reviendront à 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 ne s'affiche que si aucun autre paramètre de ligne de commande n'est spécifié.
-U login_name
Une connexion SQL Server Authentication valide avec les permissions appropriées pour effectuer le chargement.
-P password
Le mot de passe d'un login_name de SQL Server Authentication.
-W
Utiliser l'authentification Windows. (Aucun login_name ou mot de passe n'est requis).
-f parameter_file_name
Utiliser un fichier de paramètres, parameter_file_name, à la place des paramètres de la ligne de commande. parameter_file_name peut contenir n'importe quel paramètre de la ligne de commande, à l'exception de user_name et d'un 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 du fichier.
Le fichier de paramètres contient un paramètre, sans le préfixe -, par ligne.
Exemples :
rt=percentage
rv=25
-S target_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 Configuration des adaptateurs réseau InfiniBand.
Pour les connexions Ethernet, target_appliance est l'adresse IP du groupement de nœuds de contrôle.
En cas d'omission, dwloader prend par défaut la valeur spécifiée lors de l'installation de dwloader.
-T target_database_name.[schema].table_name
Nom en trois parties de la table de destination.
-I source_data_location
L'emplacement d'un ou de plusieurs fichiers source à 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 formater un fichier source :
Le fichier source doit être formaté 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 de la table de destination.
Par défaut, les champs sont de longueur variable et séparés par un séparateur. Pour spécifier le type de séparateur, 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 d'accès au réseau ou un chemin d'accès local à un répertoire sur le serveur de chargement.
Pour spécifier tous les fichiers d'un répertoire, saisissez le chemin d'accès au répertoire suivi du caractère générique *. Le chargeur ne charge pas les fichiers des sous-répertoires qui se trouvent dans l'emplacement des données sources. Le chargeur génère des erreurs lorsqu'un répertoire existe dans un fichier gzip.
Pour spécifier certains fichiers d'un répertoire, utilisez une combinaison de caractères et le caractère générique *.
Pour charger plusieurs fichiers avec une seule commande :
Tous les fichiers doivent se trouver dans le même répertoire.
Les fichiers doivent être des fichiers texte, des 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 de codage de caractères. Voir l’option -e.
Tous les fichiers doivent être chargés dans la même table.
Tous les fichiers seront concaténés et chargés comme s'il s'agissait d'un seul fichier, et les lignes rejetées seront placées dans un seul fichier de rejet.
Exemples :
-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
En cas d'échec du chargement, dwloader stocke la ligne qui n'a pas été chargée et la description de l'échec dans un fichier nommé load_failure_file_name. Si ce fichier existe déjà, dwloader l'écrasera. load_failure_file_name est créé lorsque le premier échec se produit. Si toutes les lignes sont chargées avec succès, le fichier load_failure_file_name n'est pas créé.
-fh number_header_rows
Nombre de lignes à ignorer au début de source_data_file_name. La valeur par défaut est 0.
<variable_length_column_options>
Les options pour un paramètre source_data_file_name qui a des colonnes de longueur variable séparées par des caractères. Par défaut, le fichier source_data_file_name contient des caractères ASCII dans des colonnes de longueur variable.
Pour les fichiers ASCII, les NUL sont représentés par des séparateurs placés consécutivement. Par exemple, dans un fichier séparé par des pipes (« | »), un NUL est indiqué par « || ». Dans un fichier délimité par des virgules, une valeur NUL est indiquée par « , ». En outre, l'option -E (--emptyStringAsNull) doit être spécifiée. Pour plus d'informations sur -E, voir ci-dessous.
-e character_encoding
Spécifie un type de codage de caractères pour les données à charger à partir du fichier de données. Les options sont ASCII (par défaut), UTF8, UTF16, ou UTF16BE, où UTF16 est en mode Little Endian et UTF16BE est avec primauté des octets de poids fort (big-endian). Ces options ne respectent pas la casse.
-t field_delimiter
Séparateur pour chaque champ (colonne) de la ligne. Le séparateur de champ est un ou plusieurs de ces caractères d'échappement ASCII ou valeurs hexadécimales ASCII.
Nom | Caractère d'échappement | Caractère hexadécimal |
---|---|---|
Onglet | \t | 0x09 |
Retour chariot (CR) | \r | 0x0d |
Saut de ligne (LF) | \n | 0x0A |
CRLF | \r\n | 0x0d0x0a |
Virgule | ',' | 0x2c |
Guillemet double | \" | 0x22 |
Guillemet simple | \' | 0x27 |
Pour spécifier le caractère pipe sur la ligne de commande, placez-le entre guillemets doubles, « | ». Ainsi, l'analyseur de la ligne de commande n'interprétera pas les données de manière erronée. Les autres caractères sont placés entre guillemets simples.
Exemples :
-t "|"
-t ' '
-t 0x0a
-t \t
-t '~|~'
-r row_delimiter
Séparateur pour chaque ligne du fichier de données source. Le séparateur de ligne est une ou plusieurs valeurs ASCII.
Pour spécifier un retour chariot (CR), un saut de ligne (LF) ou un caractère de tabulation comme séparateur, vous pouvez utiliser les caractères d'échappement (\r, \n, \t) ou leurs valeurs hexadécimales (0x, 0d, 09). Pour spécifier d'autres caractères spéciaux comme séparateurs, utilisez leur valeur hexadécimale.
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 n’est pas requis pour Windows.
-s string_delimiter
Séparateur pour le champ de type de données String 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é sous la forme d'un caractère (par exemple, -s *) ou d'une valeur hexadécimale (par exemple, -s 0x22 pour un guillemet double).
Exemples :
-s *
-s 0x22
< fixed_width_column_options>
Options pour un fichier de données source dont les colonnes sont de longueur fixe. Par défaut, le fichier 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.
-w fixed_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 se trouver sur le serveur de chargement. Le chemin d'accès peut être un chemin d'accès UNC, un chemin d'accès relatif ou un chemin d'accès absolu. Chaque ligne du fichier fixed_width_config_file contient le nom d'une colonne et le nombre de caractères de cette colonne. Chaque colonne comporte une ligne, 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 config à largeur fixe :
SalesCode=3
SalesID=10
Exemple de lignes dans le fichier 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 sur la conversion des types de données en mode de largeur fixe, consultez Règles de conversion des types de données pour dwloader.
-e character_encoding
Spécifie un type de codage de caractères pour les données à charger à partir du fichier de données. Les options sont ASCII (par défaut), UTF8, UTF16, ou UTF16BE, où UTF16 est en mode Little Endian et UTF16BE est avec primauté des octets de poids fort (big-endian). Ces options ne respectent pas la casse.
Les colonnes de largeur fixe ne sont pas prises en charge lorsque -e est UTF8.
-r row_delimiter
Séparateur pour chaque ligne du fichier de données source. Le séparateur de ligne est une ou plusieurs valeurs ASCII.
Pour spécifier un retour chariot (CR), un saut de ligne (LF) ou un caractère de tabulation comme séparateur, vous pouvez utiliser les caractères d'échappement (\r, \n, \t) ou leurs valeurs hexadécimales (0x, 0d, 09). Pour spécifier d'autres caractères spéciaux comme séparateurs, utilisez leur valeur hexadécimale.
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 n’est pas requis pour Windows.
-D { ymd | ydm | mdy | myd | dmy | dym | custom_date_format }
Spécifie l'ordre du mois (m), du jour (d) et de l'année (y) pour tous les champs DateHeure du fichier d'entrée. L’ordre par défaut est ymd. Pour spécifier plusieurs formats de commande 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 de placer l'année 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 que des données formatées en ydm dans des colonnes de type DateHeure et smalldatetime. Vous ne pouvez pas charger des valeurs ydm dans une colonne de type de données datetime2, date ou datetimeoffset.
mja
mdy autorise <mois><espace><jour><virgule><année>.
Exemples de données d'entrée mdy pour le Janvier 1er, 1975 :
1er janvier 1975
1er jan 75
1/jan/75
01011975
maj
Exemples de fichiers d'entrée pour le 4 mars 2010 : 3-2010-04, 3/2010/4
jam
Exemples de fichiers d'entrée pour le 4 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 n'est inclus que pour des raisons de 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 convertira dans le paramètre correspondant de ymd, ydm, mdy, myd, dym, ou dmy.
Par exemple, si vous spécifiez -D MM/jj/aaaa, dwloader s'attend à ce que toutes les dates saisies soient ordonnées avec le mois en premier, puis le jour, et enfin l'année (mdy). Il n'applique pas les mois à 2 caractères, les jours à 2 chiffres et les années à 4 chiffres tels que spécifiés par le format de date personnalisé. Voici quelques exemples de la manière dont les dates peuvent être formatées dans le fichier d'entrée lorsque le format de date est -D MM/jj/aaaa : 01/02/2013, Jan.02.2013, 1/2/2013
Pour plus d'informations sur le formatage, consultez Règles de conversion des types de données pour dwloader.
-dt datetime_format_file
Chaque format DateHeure est spécifié dans un fichier nommé datetime_format_file. Contrairement aux paramètres de la ligne de commande, les paramètres de fichier qui comprennent des espaces ne doivent pas être placés entre guillemets double. Vous ne pouvez pas modifier le format DateHeure lorsque vous chargez des données. Le fichier de données source et la colonne correspondante dans la table de destination doivent avoir le même format.
Chaque ligne contient le nom d'une colonne de la table de destination et son format DateHeure.
Exemples :
LastReceiptDate=ymd
ModifiedDate=dym
-d staging_database_name
Nom de la base de données qui contiendra la table de mise en lots. 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 de la zone de transit, consultez Créer la base de données de la zone de transit.
-M load_mode_option
Indique s'il faut ajouter, faire un upsert ou recharger les données. Le mode par défaut est append.
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). Il n'est pas possible de spécifier une base de données de la zone de transit lors de l'utilisation de fastappend. Aucune restauration n'est possible avec fastappend, ce qui signifie que la récupération d'un chargement échoué ou interrompu doit être gérée par votre propre processus de chargement.
upsert -K merge_column [ ,...n ]
Le chargeur utilise l'instruction de fusion de SQL Server pour mettre à jour les lignes existantes et insérer de nouvelles lignes.
L'option -K indique la 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 code de 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.
Les colonnes multiples doivent être séparées par des virgules sans espaces ou par des virgules avec espaces et 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.
-b batchsize
Recommandée uniquement pour le support Microsoft, la taille du lot est la taille du lot SQL Server pour la copie en bloc que DMS effectue dans les instances SQL Server sur les nœuds de calcul. Lorsque la taille du lot est spécifiée, SQL Server PDW remplace la taille du chargement du lot qui est calculée dynamiquement pour chaque chargement.
À partir de SQL Server 2012 PDW, le nœud de contrôle calcule dynamiquement une taille de lot pour chaque charge par défaut. Ce calcul automatique est basé sur plusieurs paramètres tels que la taille de la mémoire, le type de table cible, le schéma de table cible, le type de chargement, la taille du fichier et la classe de ressources de l'utilisateur.
Par exemple, si le mode de chargement est FASTAPPEND et que la table possède un index columnstore en groupement, SQL Server PDW tentera par défaut d'utiliser une taille de lot de 1 048 576 afin que les groupes de lignes deviennent CLOSED et soient chargés directement dans le columnstore sans passer par le delta store. Si la mémoire ne permet pas d'atteindre la taille de lot de 1 048 576, dwloader choisira une taille de lot plus petite.
Si le type de chargement est FASTAPPEND, la taille du lot s'applique au chargement des données dans la table, sinon la taille du lot s'applique au chargement des données dans la table de mise en lots.
<reject_options>
Spécifie les options permettant de déterminer le nombre d'échecs de chargement autorisés par le chargeur. Si les échecs de chargement dépassent le seuil, le chargeur s'arrêtera et ne validera aucune ligne.
-rt { value | percentage }
Indique si la valeur -reject_value de l'option -rv reject_value est un nombre littéral de lignes (valeur) ou un taux d'échec (pourcentage). La valeur est définie par défaut.
L'option pourcentage est un calcul en temps réel qui se produit à intervalles selon l'option -rs.
Par exemple, si le chargeur tente de charger 100 lignes, que 25 échouent et que 75 réussissent, le taux d'échec est de 25 %.
-rv reject_value
Spécifie le nombre ou le pourcentage de rejets de lignes à autoriser avant d'arrêter le chargement. L'option -rt détermine si la valeur reject_value fait référence au nombre de lignes ou au pourcentage de lignes.
La valeur par défaut reject_value est 0.
Lorsqu'il est utilisé avec la valeur -rt, le chargeur arrête le chargement lorsque le nombre de lignes rejetées dépasse la valeur reject_value.
Lorsqu'il est utilisé avec l'option -rt percentage, le chargeur calcule le pourcentage par intervalles (option -rs). Par conséquent, le pourcentage de lignes dont le chargement a échoué peut dépasser la valeur reject_value.
-rs reject_sample_size
Utilisé avec l'option -rt percentage
pour spécifier les contrôles incrémentaux en pourcentage. Par exemple, si reject_sample_size est 1000, le chargeur calcule le pourcentage de lignes ayant échoué après avoir tenté de charger 1000 lignes. Il recalcule le pourcentage de lignes ayant échoué après avoir tenté de charger chacune des 1000 lignes supplémentaires.
-c
Supprime les espaces blancs à gauche et à droite des champs char, nchar, varchar et nvarchar. Convertit chaque champ qui ne contient que des espaces blancs en une chaîne vide.
Exemples :
' ' est tronqué en ''
' abc ' est tronqué en 'abc'
Lorsque -c est utilisé avec -E, l'opération -E est effectuée en premier. Les champs qui ne contiennent que des espaces blancs sont convertis en chaîne vide et non en NUL.
-E
Convertir les chaînes vides en NULL. Par défaut, ces conversions ne sont pas effectuées.
-m
Utilisez le mode multi-transactions pour la deuxième phase de chargement, lorsque vous chargez des données de la table de mise en lots dans une table distribuée.
Avec -m, SQL Server PDW exécute et valide les chargements en parallèle. Ce mode de chargement est beaucoup plus rapide que le mode de chargement par défaut, mais il n'est pas sûr pour les transactions.
Sans -m, SQL Server PDW exécute et valide les chargements en série sur les distributions 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-transactions, mais elle est sûre pour les transactions.
-m est facultatif pour ajouter, recharger et faire un 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. La première phase de chargement, à savoir le chargement des données dans la table de mise en lots, n'est pas concernée.
Aucune restauration n'est possible avec le mode multi-transaction, ce qui signifie que la récupération d'un chargement échoué ou interrompu doit être gérée par votre propre processus de chargement.
Nous recommandons d'utiliser -m uniquement lors du chargement dans une table vide, pour pouvoir récupérer vos données sans perte. Pour récupérer à partir d’un échec de chargement : supprimez la table de destination, résolvez le problème de chargement, recréez la table de destination et réexécutez le chargement.
-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. Si vous n'êtes pas sûr que l'appliance dispose d'un certificat de confiance, demandez à l'administrateur de l'appliance.
-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 de ligne maximale (en octets) qui peut être chargée. Les valeurs valides sont des entiers compris entre 32768 et 33554432. Recourir à cette option uniquement lorsqu'il s'agit de charger des lignes volumineuses (plus de 32 Ko), car elle alloue davantage 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 commande ou un fichier de commandes, utilisez errorlevel
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
Requiert l'autorisation LOAD et les autorisations applicables (INSERT, UPDATE, DELETE) sur la table de destination. Requiert l'autorisation CREATE (pour créer une table temporaire) sur la base de données de la zone de transit. Si une base de données de la zone de transit 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 Règles de conversion des types de données pour dwloader.
Si un paramètre comprend un ou plusieurs espaces, il doit être placé entre guillemets doubles.
Vous devez exécuter le chargeur à partir de l'emplacement où il a été 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 le fichier de paramètres (option -f) en le spécifiant comme paramètre de ligne de commande.
Vous pouvez exécuter plusieurs instances du chargeur simultanément. Le nombre maximum d'instances de chargeur est préconfiguré et ne peut ê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 transactionnel et qu'il se retire gracieusement en cas d'échec, il ne peut pas être restauré une fois que le chargement en masse s'est achevé avec succès. Pour annuler un processus dwloader actif, tapez CTRL+C.
Limitations et restrictions
La taille totale de tous les chargements simultanés doit être inférieure à LOG_SIZE pour la base de données, et nous recommandons que la taille totale de tous les chargements simultanés soit inférieure à 50 % de LOG_SIZE. Pour respecter cette limite de taille, vous pouvez diviser les chargements importants en plusieurs lots. Pour plus d'informations sur LOG_SIZE, consultez CREATE DATABASE (Créer une base de données).
Lors du chargement de plusieurs fichiers avec une commande de chargement, toutes les lignes rejetées sont écrites dans le même fichier de rejet. Le fichier de rejet n'indique pas quel fichier d'entrée contient chaque ligne rejetée.
La chaîne vide ne doit pas être utilisée comme séparateur. Lorsqu'une chaîne vide est utilisée comme séparateur de ligne, le chargement échoue. Lorsqu'il est utilisé comme séparateur de colonne, le chargement ignore le séparateur et continue d'utiliser « | » 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 dwloader en matière de verrouillage varie en fonction de la valeur load_mode_option.
append – Append est l’option recommandée et la plus courante. Append charge des données dans une table de mise en lots. Le verrouillage est décrit en détail ci-dessous.
fast append – Fast-append charge directement dans la table finale en prenant un verrou de table ExclusiveUpdate, et c'est le seul mode qui n'utilise pas de table de mise en lots.
reload – Reload charge les données dans une table de mise en lots et nécessite un verrou exclusif à la fois sur la table de mise en lots et sur la table finale. Reload n’est pas recommandé pour les opérations simultanées.
upsert – Upsert charge les données dans une table de mise en lots, puis effectue une opération de fusion de la table de mise en lots à la table finale. Upsert ne nécessite pas de verrou exclusif sur la table finale. Les performances peuvent varier en cas d'utilisation d'upsert. Testez le comportement dans votre environnement.
Comportement de verrouillage
Verrouillage du mode Append
Append peut être exécuté en mode multi-transactionnel (à l'aide de l'argument -m), mais il n'est pas sûr pour les transactions. C'est pourquoi append doit être utilisé comme une opération transactionnelle (sans utiliser l'argument -m). Malheureusement, lors de l'opération INSERT-SELECT finale, le mode transactionnel est actuellement environ six fois plus lent que le mode multi-transactionnel.
Le mode append charge les données en deux phases. La première phase charge simultanément les données du fichier source dans une table de mise en lots (une fragmentation peut se produire). La deuxième phase consiste à charger les données de la table de mise en lots à la table finale. La deuxième phase exécute une opération INSERT INTO...SELECT WITH (TABLOCK). La table suivante montre le comportement de verrouillage sur la table finale et le comportement de journalisation lors de l'utilisation du mode append :
Type de la table | Multi-transactions Mode (-m) |
La table est vide | Concurrence prise en charge | Logging |
---|---|---|---|---|
Segment de mémoire (heap) | Oui | Oui | Oui | Minimal |
Segment de mémoire (heap) | Oui | No | 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 | No | Oui | Complète |
Cl | Non | Oui | Non | Minimal |
Cl | Non | Non | Oui | Complète |
La table ci-dessus montre dwloader utilisant le mode append pour charger dans un segment de mémoire ou un index cluster (CI), avec ou sans l’indicateur multi-transactionnel, et pour charger dans une table vide ou une table non vide. Le comportement de verrouillage et de journalisation de chacune de ces combinaisons de chargement est affiché dans la table. Par exemple, le chargement de la (2e) phase avec le mode append dans un index cluster sans mode multi-transactionnel et dans une table vide entraînera la création par PDW d'un verrou exclusif sur la table et la journalisation sera minimale. Cela signifie qu'un client ne sera pas en mesure de charger la (2e) phase et d'interroger simultanément une table vide. Cependant, lors du chargement avec la même configuration dans une table non vide, PDW n'émettra pas de verrou exclusif sur la table et la concurrence est possible. Malheureusement, la journalisation complète se produit, ce qui ralentit le processus.
Exemples
R. Exemple de dwloader simple
L'exemple suivant montre le lancement du chargeur avec seulement les options requises sélectionnées. Les autres options proviennent du fichier de configuration globale, loadparamfile.txt.
Exemple d'utilisation de SQL Server Authentication.
--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
Même exemple avec 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 d'utilisation d'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 commandes par lot qui charge des données dans AdventureWorksPDW2012. Pour afficher le script complet, ouvrez le fichier aw_create.bat fourni avec le package d'installation d'AdventureWorksPDW2012.
L'extrait 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 le fichier 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é par la saisie de tous les paramètres sur la ligne de commande, comme le montre 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 d'installation de dwloader.exe.
-S est suivi de l’adresse IP du nœud de contrôle.
-E indique que les chaînes vides doivent être chargées comme NUL.
-M reload indique qu'il faut tronquer la table de destination avant d'insérer les données source.
-e UTF16 indique que le fichier source utilise le type de codage de caractères en mode Little Endian.
-i .\DimAccount.txt indique que les données se trouvent dans un fichier appelé DimAccount.txt qui existe dans le répertoire actif.
-T AdventureWorksPDW2012.dbo.DimAccount indique le nom en trois parties de la table qui doit recevoir les données.
-R DimAccount.bad indique que les lignes qui ne sont pas chargées seront écrites dans un fichier appelé DimAccount.bad.
-t "|" indique que les champs du fichier d'entrée, DimAccount.txt, sont séparés par le caractère pipe.
-r \r\n indique que chaque ligne du fichier DimAccount.txt se termine par un retour chariot et un saut de ligne.
-U <login_name> -P <password> indique la connexion et le mot de passe pour la connexion qui a les permissions d'effectuer le chargement.