Partager via


Règles de conversion de type de données pour dwloader - Analytics Platform Service (PDW)

Cet article décrit les formats de données d’entrée et les conversions de types de données implicites qui prennent en charge le chargeur de ligne de commande dwloader lorsqu’il charge des données dans PDW. Les conversions de données implicites se produisent lorsque les données d’entrée ne correspondent pas au type de données dans la table cible PDW SQL Server. Utilisez ces informations lors de la conception de votre processus de chargement pour vous assurer que vos données seront correctement chargées dans SQL Server PDW.

Insérer des littéraux dans des types binaires

Le tableau suivant définit les types littéraux acceptés, le format et les règles de conversion pour charger une valeur littérale dans une colonne PDW SQL Server de type binaire (n) ou varbinary(n).

Type de données d’entrée Exemples de données d’entrée Conversion en type de données binaire ou varbinary
Littéral binaire [0x]hexidecimal_string

Exemple : 12Ef ou 0x12Ef
Le préfixe 0x est facultatif.

La longueur de la source de données ne peut pas dépasser le nombre d’octets spécifiés pour le type de données.

Si la longueur de la source de données est inférieure à la taille du type de données binaire , les données sont rembourrées à droite avec des zéros pour atteindre la taille du type de données.

Insérer des littéraux dans des types de date et d’heure

Les littéraux de date et d’heure sont représentés à l’aide de littéraux de chaîne dans des formats spécifiques, placés entre guillemets simples. Les tableaux suivants définissent les types littéraux, le format et les règles de conversion autorisés pour charger un littéral de date ou d’heure dans une colonne de type datetime, smalldatetime, date, heure, datetimeoffset ou datetime2. Les tables définissent le format par défaut pour le type de données donné. D’autres formats qui peuvent être spécifiés sont définis dans la section Formats Datetime. Les littéraux de date et d’heure ne peuvent pas inclure d’espaces de début ou de fin. Les valeurs date, smalldatetime et Null ne peuvent pas être chargées en mode largeur fixe.

Type de données datetime

Le tableau suivant définit le format et les règles par défaut pour le chargement de valeurs littérales dans une colonne de type datetime. Une chaîne vide ('') est convertie en valeur par défaut '1900-01-01-01 12 :00 :00.000'. Les chaînes qui contiennent uniquement des espaces (' ') génèrent une erreur.

Type de données d’entrée Exemples de données d’entrée Conversion en type de données datetime
Littéral de chaîne au format datetime 'aaaa-MM-dd hh :mm :ss[.fff]'

Exemple : « 2007-05-08 12 :35 :29.123 »
Les chiffres fractionnels manquants sont définis sur 0 lorsque la valeur est insérée. Par exemple, le littéral « 2007-05-08 12 :35 » est inséré en tant que « 2007-05-08 12 :35 :00.000 ».
Littéral de chaîne au format smalldatetime 'aaaa-MM-dd hh :mm'

Exemple : « 2007-05-08 12 :35 »
Les secondes et les chiffres fractionnaires restants sont définis sur 0 lorsque la valeur est insérée.
Littéral de chaîne au format de date 'aaaa-MM-jj'

Exemple : « 2007-05-08 »
Les valeurs de temps (heure, minutes, secondes et fractions) sont définies sur 12 :00 :00.000 lorsque la valeur est insérée.
Littéral de chaîne au format datetime2 'aaaa-MM-dd hh :mm :ss.fffffff'

Exemple : « 2007-05-08 12 :35 :29.1234567 »
Les données sources ne peuvent pas dépasser trois chiffres fractionnaires. Par exemple, le littéral « 2007-05-08 12 :35 :29.123 » est inséré, mais la valeur « 2007-05-8 12 :35 :29.1234567 » génère une erreur.

Type de données smalldatetime

Le tableau suivant définit le format et les règles par défaut pour le chargement de valeurs littérales dans une colonne de type smalldatetime. Une chaîne vide ('') est convertie en valeur par défaut '1900-01-01-12 :00'. Les chaînes qui contiennent uniquement des espaces (' ') génèrent une erreur.

Type de données d’entrée Exemples de données d’entrée Conversion en type de données smalldatetime
Littéral de chaîne au format smalldatetime 'aaaa-MM-dd hh :mm' ou 'aaaa-MM-jj hh :mm :ss'

Exemple : « 2007-05-08 12 :00 » ou « 2007-05-08 12 :00 :15 »
Les données sources doivent avoir des valeurs pour l’année, le mois, la date, l’heure et la minute. Les secondes sont facultatives et, si elles sont présentes, doivent être définies sur la valeur 00. Toute autre valeur génère une erreur.

Les secondes sont facultatives. Lors du chargement dans une colonne smalldatetime, dwloader arrondit les secondes et les fractions de secondes. Par exemple, 1999-01-05 20 :10 :35.123 sera chargé comme 01-05 20 :11.
Littéral de chaîne au format de date 'aaaa-MM-jj'

Exemple : « 2007-05-08 »
Les valeurs de temps (heure, minutes, secondes et fractions) sont définies sur 0 lorsque la valeur est insérée.

Type de données date

Le tableau suivant définit le format et les règles par défaut pour le chargement de valeurs littérales dans une colonne de type date. Une chaîne vide ('') est convertie en valeur par défaut '1900-01-01'. Les chaînes qui contiennent uniquement des espaces (' ') génèrent une erreur.

Type de données d’entrée Exemples de données d’entrée Conversion en type de données date
Littéral de chaîne au format de date 'aaaa-MM-jj'

Exemple : « 2007-05-08 »

type de données time

Le tableau suivant définit le format et les règles par défaut pour le chargement de valeurs littérales dans une colonne de type time. Une chaîne vide ('') est convertie en valeur par défaut '00 :00 :00.0000'. Les chaînes qui contiennent uniquement des espaces (' ') génèrent une erreur.

Type de données d’entrée Exemples de données d’entrée Conversion en type de données de temps
Littéral de chaîne au format de temps 'hh :mm :ss.fffffff'

Exemple : '12 :35 :29.1234567'
Si la source de données a une précision plus petite ou égale (nombre de chiffres fractionnels) que la précision du type de données de temps , les données sont complétées à droite avec des zéros. Par exemple, une valeur littérale « 12 :35 :29.123 » est insérée sous la forme « 12 :35 :29.1230000 ».

type de données datetimeoffset

Le tableau suivant définit le format et les règles par défaut pour le chargement de valeurs littérales dans une colonne de type datetimeoffset (n). Le format par défaut est « aaaa-MM-dd hh :mm :ss.fffffff {+|-}hh :mm ». Une chaîne vide ('') est convertie en valeur par défaut '1900-01-01 12 :00 :00.00000000 +00 :00'. Les chaînes qui contiennent uniquement des espaces (' ') génèrent une erreur. Le nombre de chiffres fractionnels dépend de la définition de colonne. Par exemple, une colonne définie comme datetimeoffset (2) a deux chiffres fractionnaires.

Type de données d’entrée Exemples de données d’entrée Conversion en type de données datetimeoffset
Littéral de chaîne au format datetime 'aaaa-MM-dd hh :mm :ss[.fff]'

Exemple : « 2007-05-08 12 :35 :29.123 »
Les chiffres fractionnels manquants et les valeurs de décalage sont définis sur 0 lorsque la valeur est insérée. Par exemple, le littéral « 2007-05-08 12 :35 :29.123 » est inséré en tant que « 2007-05-08 12 :35 :29.1230000 +00 :00 ».
Littéral de chaîne au format smalldatetime 'aaaa-MM-dd hh :mm'

Exemple : « 2007-05-08 12 :35 »
Les secondes, les chiffres fractionnaires restants et les valeurs de décalage sont définis sur 0 lorsque la valeur est insérée.
Littéral de chaîne au format de date 'aaaa-MM-jj'

Exemple : « 2007-05-08 »
Les valeurs de temps (heure, minutes, secondes et fractions) sont définies sur 0 lorsque la valeur est insérée. Par exemple, le littéral « 2007-05-08 » est inséré sous la forme « 2007-05-08 00 :00 :00.00000000 +00 :00 ».
Littéral de chaîne au format datetime2 'aaaa-MM-dd hh :mm :ss.fffffff'

Exemple : « 2007-05-08 12 :35 :29.1234567 »
Les données sources ne peuvent pas dépasser le nombre spécifié de fractions de secondes dans la colonne datetimeoffset. Si la source de données a un plus petit ou égal nombre de fractions de secondes, les données sont complétées à droite avec des zéros. Par exemple, si le type de données est datetimeoffset (5), la valeur littérale « 2007-05-08 12 :35 :29.123 +12 :15 » est insérée sous la forme « 12 :35 :29.12300 +12 :15 ».
Littéral de chaîne au format datetimeoffset 'aaaa-MM-dd hh :mm :ss.fffffff {+|-} hh :mm'

Exemple : '2007-05-08 12 :35 :29.1234567 +12 :15'
Les données sources ne peuvent pas dépasser le nombre spécifié de fractions de secondes dans la colonne datetimeoffset. Si la source de données a un plus petit ou égal nombre de fractions de secondes, les données sont complétées à droite avec des zéros. Par exemple, si le type de données est datetimeoffset (5), la valeur littérale « 2007-05-08 12 :35 :29.123 +12 :15 » est insérée sous la forme « 12 :35 :29.12300 +12 :15 ».

Type de données datetime2

Le tableau suivant définit le format et les règles par défaut pour le chargement de valeurs littérales dans une colonne de type datetime2 (n). Le format par défaut est « aaaa-MM-dd hh :mm :ss.fffffff ». Une chaîne vide ('') est convertie en valeur par défaut '1900-01-01-01 12 :00 :00'. Les chaînes qui contiennent uniquement des espaces (' ') génèrent une erreur. Le nombre de chiffres fractionnels dépend de la définition de colonne. Par exemple, une colonne définie comme datetime2 (2) a deux chiffres fractionnaires.

Type de données d’entrée Exemples de données d’entrée Conversion en type de données datetime2
Littéral de chaîne au format datetime 'aaaa-MM-dd hh :mm :ss[.fff]'

Exemple : « 2007-05-08 12 :35 :29.123 »
Les fractions de seconde sont facultatives et sont définies sur 0 lorsque la valeur est insérée.
Littéral de chaîne au format smalldatetime 'aaaa-MM-dd hh :mm'

Exemple : « 2007-05-08 12 »
Les secondes facultatives et les chiffres fractionnaires restants sont définis sur 0 lorsque la valeur est insérée.
Littéral de chaîne au format de date 'aaaa-MM-jj'

Exemple : « 2007-05-08 »
Les valeurs de temps (heure, minutes, secondes et fractions) sont définies sur 0 lorsque la valeur est insérée. Par exemple, le littéral « 2007-05-08 » est inséré en tant que « 2007-05-08 12 :00 :00.00000000 ».
Littéral de chaîne au format datetime2 'aaaa-MM-dd hh :mm :ss :fffffff'

Exemple : « 2007-05-08 12 :35 :29.1234567 »
Si la source de données contient des données et des composants d’heure inférieurs ou égaux à la valeur spécifiée dans datetime2(n), les données sont insérées ; sinon, une erreur est générée.

DateTime Formats

Dwloader prend en charge les formats de données suivants pour les données d’entrée qu’il charge dans SQL Server PDW. Plus d’informations sont répertoriées après le tableau.

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

Détails :

  • Pour séparer les valeurs mois, jour et année, vous pouvez utiliser ' - ', ' / ' ou ' . '. Par souci de simplicité, le tableau utilise uniquement le séparateur « - ».

  • Pour spécifier le mois en tant que texte, utilisez trois caractères ou plus. Les mois avec 1 ou 2 caractères sont interprétés comme un nombre.

  • Pour séparer les valeurs temporelles, utilisez le symbole « : ».

  • Les lettres entre crochets sont facultatives.

  • Les lettres 'tt' désignent AM|PM|am|pm. AM est la valeur par défaut. Lorsque « tt » est spécifié, la valeur d’heure (hh) doit être comprise entre 0 et 12.

  • Les lettres « zzz » désignent le décalage de fuseau horaire pour le fuseau horaire actuel du système au format {+|-}HH:ss].

Insérer des littéraux dans des types numériques

Les tableaux suivants définissent le format et les règles de conversion par défaut pour charger une valeur littérale dans une colonne PDW SQL Server qui utilise un type numérique.

type de données bit

Le tableau suivant définit le format et les règles par défaut pour le chargement de valeurs littérales dans une colonne de type bit. Une chaîne vide ('') ou une chaîne qui contient uniquement des vides (' ') est convertie en 0.

Type de données d’entrée Exemples de données d’entrée Conversion en type de données bit
Littéral de chaîne au format entier 'ffffffffff'

Exemple : '1' ou '321'
Une valeur entière mise en forme en tant que littéral de chaîne ne peut pas contenir de valeur négative. Par exemple, la valeur « -123 » génère une erreur.

Une valeur supérieure à 1 est convertie en 1. Par exemple, la valeur « 123 » est convertie en 1.
Littéral de chaîne 'TRUE' ou 'FALSE'

Exemple : 'true'
La valeur 'TRUE' est convertie en 1 ; la valeur 'FALSE' est convertie en 0.
Littéral entier fffffffn

Exemple : 1 ou 321
Une valeur supérieure à 1 ou inférieure à 0 est convertie en 1. Par exemple, les valeurs 123 et -123 sont converties en 1.
Littéral décimal fffnn.fffn

Exemple : 1234.5678
Une valeur supérieure à 1 ou inférieure à 0 est convertie en 1. Par exemple, les valeurs 123.45 et -123.45 sont converties en 1.

Type de données décimal

Le tableau suivant définit les règles de chargement des valeurs littérales dans une colonne de type décimal (p,s). Les règles de conversion de données sont les mêmes que pour SQL Server. Pour plus d’informations, consultez La conversion de type de données (Moteur de base de données) sur MSDN.

Type de données d’entrée Exemples de données d’entrée
Littéral entier 321312313123
Littéral décimal 123344.34455

types de données float et réels

Le tableau suivant définit des règles pour charger des valeurs littérales dans une colonne de type float ou réelle. Les règles de conversion de données sont les mêmes que pour SQL Server. Pour plus d’informations, consultez La conversion de type de données (Moteur de base de données) sur MSDN.

Type de données d’entrée Exemples de données d’entrée
Littéral entier 321312313123
Littéral décimal 123344.34455
Littéral à virgule flottante 3.12323E+14

int, bigint, tinyint, smallint data types

Le tableau suivant définit les règles de chargement des valeurs littérales dans une colonne de type int, bigint, tinyint ou smallint. La source de données ne peut pas dépasser la plage autorisée pour le type de données donné. Par exemple, la plage de tinyint est de 0 à 255 et la plage pour int est de -2 147 483 648 à 2 147 483 647.

Type de données d’entrée Exemples de données d’entrée Conversion en types de données Integer
Littéral entier 321312313123
Littéral décimal 123344.34455 Les valeurs à droite de la virgule décimale sont tronquées.

types de données money et smallmoney

Les valeurs littérales money sont représentées sous la forme d’une chaîne de nombres avec une virgule décimale facultative et un symbole monétaire facultatif comme préfixe. La source de données ne peut pas dépasser la plage autorisée pour le type de données donné. Par exemple, la plage pour smallmoney est de -214 748,3648 à 214 748,3647 et la plage d’argent est -922,3 37 203 685 477,5808 à 922 337 203 685 477,5807. Le tableau suivant définit les règles de chargement des valeurs littérales dans une colonne de type money ou smallmoney.

Type de données d’entrée Exemples de données d’entrée Conversion en argent ou type de données smallmoney
Littéral entier 321312 Les chiffres manquants après la virgule décimale sont définis sur 0 lorsque la valeur est insérée. Par exemple, le littéral 12345 est inséré en tant que 12345.0000
Littéral décimal 123344.34455 Si le nombre de chiffres après la virgule décimale dépasse 4, la valeur est arrondie à la valeur la plus proche. Par exemple, la valeur 123344.34455 est insérée comme 123344.3446.
Littéral d’argent 123456,7890 $ Le symbole monétaire n’est pas inséré avec la valeur.

Si le nombre de chiffres après la virgule décimale dépasse 4, la valeur est arrondie à la valeur la plus proche.

Insérer des littéraux dans des types de chaînes

Les tableaux suivants définissent le format et les règles de conversion par défaut pour charger une valeur littérale dans une colonne PDW SQL Server qui utilise un type de chaîne.

char, varchar, nchar et types de données nvarchar

Le tableau suivant définit le format et les règles par défaut pour le chargement de valeurs littérales dans une colonne de type char, varchar, nchar et nvarchar. La longueur de la source de données ne peut pas dépasser la taille spécifiée pour le type de données. Si la longueur de la source de données est inférieure à la taille du type de données char ou nchar , les données sont rembourrées à droite avec des espaces vides pour atteindre la taille du type de données.

Type de données d’entrée Exemples de données d’entrée Conversion en types de données caractère
Littéral de chaîne Format : 'chaîne de caractères'

Exemple : 'abc'
NA
Littéral de chaîne Unicode Format : N’character string'

Exemple : N’abc'
NA
Littéral entier Format : ffffffffn

Exemple : 321312313123
NA
Littéral décimal Format : ffffff.fff

Exemple : 12344.34455
NA
Littéral d’argent Format : $ffffff.fffnn

Exemple : $123456.99
Le symbole monétaire facultatif n’est pas inséré avec la valeur. Pour insérer le symbole monétaire, insérez la valeur en tant que littéral de chaîne. Cela correspond au format du chargeur, qui traite chaque littéral en tant que littéral de chaîne.

Les virgules ne sont pas autorisées.

Si le nombre de chiffres après la virgule décimale dépasse 2, la valeur est arrondie à la valeur la plus proche. Par exemple, la valeur 123.946789 est insérée comme 123.95.

Seul le style par défaut 0 (aucune virgule et 2 chiffres après la virgule décimale) est autorisé lors de l’utilisation de la fonction CONVERT pour insérer des littéraux d’argent.

Remarques d'ordre général

dwloader effectue les mêmes conversions implicites que SMP SQL Server, mais ne prend pas en charge toutes les conversions implicites prises en charge par SMP SQL Server.