Charger des données avec INSERT dans Parallel Data Warehouse
Vous pouvez utiliser l’instruction tsql INSERT pour charger des données dans une table distribuée ou répliquée SQL Server Parallel Data Warehouse (PDW). Pour plus d’informations sur INSERT, consultez INSERT. Pour les tables répliquées et toutes les colonnes non distribuées d’une table distribuée, PDW utilise SQL Server pour convertir implicitement les valeurs de données spécifiées dans l’instruction en type de données de la colonne de destination. Pour plus d’informations sur les règles de conversion de données SQL Server, consultez La conversion de type de données pour SQL. Toutefois, pour les colonnes de distribution, PDW prend uniquement en charge un sous-ensemble de conversions implicites prises en charge par SQL Server. Par conséquent, lorsque vous utilisez l’instruction INSERT pour charger des données dans une colonne de distribution, les données sources doivent être spécifiées dans l’un des formats définis dans les tableaux suivants.
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 l’insertion d’une valeur littérale dans une colonne de distribution de type binaire (n) ou varbinary(n).
Type littéral | Mettre en forme | Règles de conversion |
---|---|---|
Littéral binaire | 0xhexidecimal_string Exemple : 0x12Ef |
Les littéraux binaires doivent être précédés de 0x. 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 valeurs de caractères 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 insérer un littéral de date ou d’heure dans une colonne de distribution SQL Server PDW de type datetime, smalldatetime, date, heure, datetimeoffset ou datetime2.
Type de données datetime
Le tableau suivant définit les formats et règles acceptés pour l’insertion de valeurs littérales dans une colonne de distribution de type datetime. Toute 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 littéral | Mettre en forme | Règles de conversion |
---|---|---|
Littéral de chaîne au format datetime | 'AAAA-MM-DD hh:mm:ss[.nnn]' 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-DD' 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.nnnnnnn' 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-08 12:35:29.1234567 » génère une erreur. |
type de données smalldatetime
Le tableau suivant définit les formats et règles acceptés pour l’insertion de valeurs littérales dans une colonne de distribution de type smalldatetime. Toute 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 littéral | Mettre en forme | Règles de conversion |
---|---|---|
Littéral de chaîne au format smalldatetime | 'AAAA-MM-DD hh:mm' ou 'AAAA-MM-JJ hh:mm:00' Exemple : « 2007-05-08 12:00 » ou « 2007-05-08 12:00:00 » |
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. |
Littéral de chaîne au format de date | 'AAAA-MM-DD' 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 les formats et règles acceptés pour l’insertion de valeurs littérales dans une colonne de distribution de type date. Toute 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 littéral | Mettre en forme | Règles de conversion |
---|---|---|
Littéral de chaîne au format de date | 'AAAA-MM-DD' Exemple : « 2007-05-08 » |
Il s’agit du seul format accepté. |
type de données time
Le tableau suivant définit les formats et règles acceptés pour l’insertion de valeurs littérales dans une colonne de distribution de type time. Toute 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 littéral | Mettre en forme | Règles de conversion |
---|---|---|
Littéral de chaîne au format de temps | 'hh:mm:ss.nnnnnnn' 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 ». Valeur qui a une précision plus grande que le type de données cible est rejetée. |
type de données datetimeoffset
Le tableau suivant définit les formats et règles acceptés pour l’insertion de valeurs littérales dans une colonne de distribution de type datetimeoffset (n). Le format par défaut est « AAAA-MM-DD hh:mm:ss.nnnnnnn {+|-}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 littéral | Mettre en forme | Règles de conversion |
---|---|---|
Littéral de chaîne au format datetime | 'AAAA-MM-DD hh:mm:ss[.nnn]' 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-DD' 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.nnnnnnn' 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.nnnnnnn {+|-} 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 les formats et règles acceptés pour l’insertion de valeurs littérales dans une colonne de distribution de type datetime2 (n). Le format par défaut est « AAAA-MM-DD hh:mm:ss.nnnnnnn ». 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 littéral | Mettre en forme | Règles de conversion |
---|---|---|
Littéral de chaîne au format datetime | 'AAAA-MM-DD hh:mm:ss[.nnn]' 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. Valeur qui a plus de chiffres fractionnels que le type de données cible est rejeté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-DD' 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:nnnnnnn' 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. |
Insérer des littéraux dans des types numériques
Les tableaux suivants définissent les formats et règles de conversion acceptés pour l’insertion d’une valeur littérale dans une colonne de distribution PDW SQL Server qui utilise un type numérique.
type de données bit
Le tableau suivant définit les formats et règles acceptés pour l’insertion de valeurs littérales dans une colonne de distribution de type bit. Une chaîne vide ('') ou une chaîne qui contient uniquement des vides (' ') est convertie en 0.
Type littéral | format | Règles de conversion |
---|---|---|
Littéral de chaîne au format entier | 'nnnnnnnnnnnn' 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 | nnnnnnnnnn 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 | nnnnn.nnnn 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 decimal
Le tableau suivant définit les formats et règles acceptés pour l’insertion de valeurs littérales dans une colonne de distribution 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 sur MSDN.
Type littéral | Mettre en forme |
---|---|
Littéral de chaîne au format entier | 'nnnnnnnnnn' Exemple : '321312313123' |
Littéral de chaîne au format décimal | 'nnnnnn.nnnnn' Exemple : '123344.34455' |
Littéral entier | nnnnnnnnnnnn Exemple : 321312313123 |
Littéral décimal | nnnnnn.nnnnn Exemple : '123344.34455' |
types de données float et réels
Le tableau suivant définit les formats et règles acceptés pour l’insertion de valeurs littérales dans une colonne de distribution de type float ou réel. 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 sur MSDN.
Type littéral | Mettre en forme |
---|---|
Littéral de chaîne au format entier | 'nnnnnnnnnn' Exemple : '321312313123' |
Littéral de chaîne au format décimal | 'nnnnnn.nnnnn' Exemple : '123344.34455' |
Littéral de chaîne au format à virgule flottante | 'n.nnnnnE+nn' Exemple : '3.12323E+14' |
Littéral entier | nnnnnnnnnnnn Exemple : 321312313123 |
Littéral décimal | nnnnnn.nnnnn Exemple : 123344.34455 |
Littéral à virgule flottante | n.nnnnnE+nn Exemple : 3.12323E+14 |
int, bigint, tinyint, smallint data types
Le tableau suivant définit les formats et règles acceptés pour l’insertion de valeurs littérales dans une colonne de distribution 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 littéral | Mettre en forme | Règles de conversion |
---|---|---|
Littéral de chaîne au format entier | 'nnnnnnnn' Exemple : '321312313123' |
None |
Littéral entier | nnnnnnnn Exemple : 321312313123 |
None |
Littéral décimal | nnnnnn.nnnnn Exemple : 123344.34455 |
Les valeurs à droite de la virgule décimale sont tronquées. |
types de données money et smallmoney
Les valeurs littérales d’argent sont représentées sous forme de nombres avec un symbole décimal facultatif et monétaire 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 formats et règles acceptés pour insérer des valeurs littérales dans une colonne de distribution de type money ou smallmoney.
Type littéral | Mettre en forme | Règles de conversion |
---|---|---|
Littéral de chaîne au format entier | 'nnnnnnnnnn' Exemple : '123433' |
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 de chaîne au format décimal | 'nnnnnn.nnnnn' Exemple : '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 1233444.3446. |
Littéral de chaîne au format money | '$nnnnnn.nnnn' Exemple : '$123456.7890' |
Le symbole monétaire facultatif 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. |
Littéral entier | nnnnnnnnnn Exemple : 123433 |
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 | nnnnnn.nnnnn Exemple : 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 | $nnnnnn.nnnn Exemple : 123456,7890 $ |
Le symbole monétaire facultatif 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. |
Insertion de littéraux dans des types de chaînes
Les tableaux suivants définissent les formats acceptés et les règles de conversion pour l’insertion d’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 les formats et règles acceptés pour l’insertion de valeurs littérales dans une colonne de distribution 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 littéral | Mettre en forme | Règles de conversion |
---|---|---|
Littéral de chaîne | Format : 'chaîne de caractères' Exemple : 'abc' |
None |
Littéral de chaîne Unicode | Format : N’character string' Exemple : N’abc' |
None |
Littéral entier | Format : nnnnnnnnnnnnn Exemple : 321312313123 |
None |
Littéral décimal | Format : nnnnnn.nnnnnnn Exemple : 12344.34455 |
None |
Littéral d’argent | Format : $nnnnnn.nnnnn Exemple : $123456.99 |
Le symbole monétaire 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 de l’outil dwloader , 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. |