Reglas de conversión de tipos de datos para dwloader: Analytics Platform Service (PDW)
En este artículo se describen los formatos de datos de entrada y las conversiones implícitas de tipos de datos que el cargador de la línea de comandos dwloader admite cuando carga datos en PDW. Las conversiones de datos implícitas se producen cuando los datos de entrada no coinciden con el tipo de datos de la tabla de destino PDW de SQL Server. Use esta información al diseñar el proceso de carga para asegurarse de que los datos se cargarán correctamente en PDW de SQL Server.
Inserción de literales en tipos binarios
En la tabla siguiente se definen los tipos literales aceptados, el formato y las reglas de conversión para cargar un valor literal en una columna de PDW de SQL Server de tipo binary (n) o varbinary(n).
Tipo de datos de entrada | Ejemplos de datos de entrada | Conversión al tipo de datos binary o varbinary |
---|---|---|
Literal binario | [0x]cadena_hexadecimal Ejemplo: 12Ef o 0x12Ef |
El prefijo 0x es opcional. La longitud del origen de datos no puede superar el número de bytes especificados para el tipo de datos. Si la longitud del origen de datos es menor que el tamaño del tipo de datos binary, los datos se rellenan a la derecha con ceros para alcanzar el tamaño del tipo de datos. |
Inserción de literales en tipos de fecha y hora
Los literales de fecha y hora se representan mediante literales de cadena en formatos específicos, entre comillas simples. En las tablas siguientes se definen los tipos literales permitidos, el formato y las reglas de conversión para cargar un literal de fecha u hora en una columna de tipo datetime, smalldatetime, date, time, datetimeoffset o datetime2. En las tablas se define el formato predeterminado para el tipo de datos especificado. Los demás formatos que se pueden especificar se definen en la sección Formatos de fecha y hora. Los literales de fecha y hora no pueden incluir espacios iniciales ni finales. Los valores date, smalldatetime y NULL no se pueden cargar en modo de ancho fijo.
Tipo de datos datetime
En la tabla siguiente se definen el formato predeterminado y las reglas para cargar valores literales en una columna de tipo datetime. Una cadena vacía ('') se convierte en el valor predeterminado "1900-01-01 12:00:00.000". Las cadenas que contienen solo espacios en blanco (" ") generan un error.
Tipo de datos de entrada | Ejemplos de datos de entrada | Conversión al tipo de datos datetime |
---|---|---|
Literal de cadena en formato datetime | "aaaa-MM-dd hh:mm:ss[.fff]" Ejemplo: "2007-05-08 12:35:29.123" |
Los dígitos fraccionales que faltan se establecen en 0 cuando se inserta el valor. Por ejemplo, el literal "2007-05-08 12:35" se inserta como "2007-05-08 12:35:00.000". |
Literal de cadena en formato smalldatetime | "aaaa-MM-dd hh:mm" Ejemplo: "2007-05-08 12:35" |
Los segundos y los dígitos fraccionales restantes se establecen en 0 cuando se inserta el valor. |
Literal de cadena en formato date | "aaaa-MM-dd" Ejemplo: "2007-05-08" |
Los valores de hora (hora, minutos, segundos y fracciones) se establecen en 12:00:00.000 cuando se inserta el valor. |
Literal de cadena en formato datetime2 | "aaaa-MM-dd hh:mm:ss.fffffff" Ejemplo: "2007-05-08 12:35:29.1234567" |
Los datos de origen no pueden superar los tres dígitos fraccionales. Por ejemplo, se insertará el literal "2007-05-08 12:35:29.123", pero el valor "2007-05-8 12:35:29.1234567" genera un error. |
Tipo de datos smalldatetime
En la tabla siguiente se definen el formato predeterminado y las reglas para cargar valores literales en una columna de tipo smalldatetime. Una cadena vacía ('') se convierte en el valor predeterminado "1900-01-01 12:00". Las cadenas que contienen solo espacios en blanco (" ") generan un error.
Tipo de datos de entrada | Ejemplos de datos de entrada | Conversión al tipo de datos smalldatetime |
---|---|---|
Literal de cadena en formato smalldatetime | "aaaa-MM-dd hh:mm" o "aaaa-MM-dd hh:mm:ss" Ejemplo: "2007-05-08 12:00" o "2007-05-08 12:00:15" |
Los datos de origen deben tener valores para el año, el mes, la fecha, la hora y el minuto. Los segundos son opcionales y, si están presentes, se deben establecer en el valor 00. Cualquier otro valor genera un código de error. Los segundos son opcionales. Al realizar la carga en una columna smalldatetime, dwloader redondea los segundos y las fracciones de segundo. Por ejemplo, 1999-01-05 20:10:35.123 se cargará como 01-05 20:11. |
Literal de cadena en formato date | "aaaa-MM-dd" Ejemplo: "2007-05-08" |
Los valores de hora (hora, minutos, segundos y fracciones) se establecen en 0 cuando se inserta el valor. |
Tipo de datos date
En la tabla siguiente se definen el formato predeterminado y las reglas para cargar valores literales en una columna de tipo date. Una cadena vacía ('') se convierte en el valor predeterminado "1900-01-01". Las cadenas que contienen solo espacios en blanco (" ") generan un error.
Tipo de datos de entrada | Ejemplos de datos de entrada | Conversión al tipo de datos date |
---|---|---|
Literal de cadena en formato date | "aaaa-MM-dd" Ejemplo: "2007-05-08" |
Tipo de datos time
En la tabla siguiente se definen el formato predeterminado y las reglas para cargar valores literales en una columna de tipo time. Una cadena vacía ('') se convierte en el valor predeterminado "00:00:00.0000". Las cadenas que contienen solo espacios en blanco (" ") generan un error.
Tipo de datos de entrada | Ejemplos de datos de entrada | Conversión al tipo de datos de Fecha y hora |
---|---|---|
Literal de cadena en formato time | "hh:mm:ss.fffffff" Ejemplo: "12:35:29.1234567" |
Si el origen de datos tiene una precisión menor o igual (número de dígitos fraccionales) que la precisión del tipo de datos time, los datos se rellenan a la derecha con ceros. Por ejemplo, un valor literal "12:35:29.123" se inserta como "12:35:29.1230000". |
Tipo de datos datetimeoffset
En la tabla siguiente se definen el formato predeterminado y las reglas para cargar valores literales en una columna de tipo datetimeoffset (n). El formato predeterminado es "aaaa-MM-dd hh:mm:ss.fffffff {+|-}hh:mm". Una cadena vacía ('') se convierte en el valor predeterminado "1900-01-01 12:00:00.0000000 +00:00". Las cadenas que contienen solo espacios en blanco (" ") generan un error. El número de dígitos fraccionales depende de la definición de columna. Por ejemplo, una columna definida como datetimeoffset (2) tendrá dos dígitos fraccionales.
Tipo de datos de entrada | Ejemplos de datos de entrada | Conversión al tipo de datos datetimeoffset |
---|---|---|
Literal de cadena en formato datetime | "aaaa-MM-dd hh:mm:ss[.fff]" Ejemplo: "2007-05-08 12:35:29.123" |
Los dígitos fraccionales que faltan y los valores de desplazamiento se establecen en 0 cuando se inserta el valor. Por ejemplo, el literal "2007-05-08 12:35:29.123" se inserta como "2007-05-08 12:35:29.1230000 +00:00". |
Literal de cadena en formato smalldatetime | "aaaa-MM-dd hh:mm" Ejemplo: "2007-05-08 12:35" |
Los segundos, los dígitos fraccionales restantes y los valores de desplazamiento se establecen en 0 cuando se inserta el valor. |
Literal de cadena en formato date | "aaaa-MM-dd" Ejemplo: "2007-05-08" |
Los valores de hora (hora, minutos, segundos y fracciones) se establecen en 0 cuando se inserta el valor. Por ejemplo, el literal "2007-05-08" se inserta como "2007-05-08 00:00:00.0000000 +00:00". |
Literal de cadena en formato datetime2 | "aaaa-MM-dd hh:mm:ss.fffffff" Ejemplo: "2007-05-08 12:35:29.1234567" |
Los datos de origen no pueden superar el número especificado de fracciones de segundo en la columna datetimeoffset. Si el origen de datos tiene un número menor o igual de fracciones de segundo, los datos se rellenan a la derecha con ceros. Por ejemplo, si el tipo de datos es datetimeoffset (5), el valor literal "2007-05-08 12:35:29.123 +12:15" se inserta como "12:35:29.12300 +12:15". |
Literal de cadena en formato datetimeoffset | "aaaa-MM-dd hh:mm:ss.fffffff {+|-} hh:mm" Ejemplo: "2007-05-08 12:35:29.1234567 +12:15" |
Los datos de origen no pueden superar el número especificado de fracciones de segundo en la columna datetimeoffset. Si el origen de datos tiene un número menor o igual de fracciones de segundo, los datos se rellenan a la derecha con ceros. Por ejemplo, si el tipo de datos es datetimeoffset (5), el valor literal "2007-05-08 12:35:29.123 +12:15" se inserta como "12:35:29.12300 +12:15". |
Tipo de datos datetime2
En la tabla siguiente se definen el formato predeterminado y las reglas para cargar valores literales en una columna de tipo datetime2 (n). El formato predeterminado es "aaaa-MM-dd hh:mm:ss.fffffff". Una cadena vacía ('') se convierte en el valor predeterminado "1900-01-01 12:00:00". Las cadenas que contienen solo espacios en blanco (" ") generan un error. El número de dígitos fraccionales depende de la definición de columna. Por ejemplo, una columna definida como datetime2 (2) tendrá dos dígitos fraccionales.
Tipo de datos de entrada | Ejemplos de datos de entrada | Conversión al tipo de datos datetime2 |
---|---|---|
Literal de cadena en formato datetime | "aaaa-MM-dd hh:mm:ss[.fff]" Ejemplo: "2007-05-08 12:35:29.123" |
Las fracciones de segundo son opcionales y se establecen en 0 cuando se inserta el valor. |
Literal de cadena en formato smalldatetime | "aaaa-MM-dd hh:mm" Ejemplo: "2007-05-08 12" |
Los segundos opcionales y los dígitos fraccionales restantes se establecen en 0 cuando se inserta el valor. |
Literal de cadena en formato date | "aaaa-MM-dd" Ejemplo: "2007-05-08" |
Los valores de hora (hora, minutos, segundos y fracciones) se establecen en 0 cuando se inserta el valor. Por ejemplo, el literal "2007-05-08" se inserta como "2007-05-08 12:00:00.0000000". |
Literal de cadena en formato datetime2 | "aaaa-MM-dd hh:mm:ss:fffffff" Ejemplo: "2007-05-08 12:35:29.1234567" |
Si el origen de datos contiene componentes de datos y hora que son menores o iguales que el valor especificado en datetime2(n), se insertan los datos; de lo contrario, se genera un error. |
Formatos de datetime
dwloader admite los siguientes formatos de datos para los datos de entrada que se cargan en PDW de SQL Server. Se muestran más detalles después de la tabla.
datetime | smalldatetime | date | datetime2 | datetimeoffset |
---|---|---|---|---|
[M[M]]M-[d]d-[aa]aa HH:mm:ss[.fff] | [M[M]]M-[d]d-[aa]aa HH:mm[:00] | [M[M]]M-[d]d-[aa]aa | [M[M]]M-[d]d-[aa]aa HH:mm:ss[.fffffff] | [M[M]]M-[d]d-[aa]aa HH:mm:ss[.fffffff] zzz |
[M[M]]M-[d]d-[aa]aa hh:mm:ss[.fff][tt] | [M[M]]M-[d]d-[aa]aa hh:mm[:00][tt] | [M[M]]M-[d]d-[aa]aa hh:mm:ss[.fffffff][tt] | [M[M]]M-[d]d-[aa]aa hh:mm:ss[.fffffff][tt] zzz | |
[M[M]]M-[aa]aa-[d]d HH:mm:ss[.fff] | [M[M]]M-[aa]aa-[d]d HH:mm[:00] | [M[M]]M-[aa]aa-[d]d | [M[M]]M-[aa]aa-[d]d HH:mm:ss[.fffffff] | [M[M]]M-[aa]aa-[d]d HH:mm:ss[.fffffff] zzz |
[M[M]]M-[aa]aa-[d]d hh:mm:ss[.fff][tt] | [M[M]]M-[aa]aa-[d]d hh:mm[:00][tt] | [M[M]]M-[aa]aa-[d]d hh:mm:ss[.fffffff][tt] | [M[M]]M-[aa]aa-[d]d hh:mm:ss[.fffffff][tt] zzz | |
[aa]aa-[M[M]]M-[d]d HH:mm:ss[.fff] | [aa]aa-[M[M]]M-[d]d HH:mm[:00] | [aa]aa-[M[M]]M-[d]d | [aa]aa-[M[M]]M-[d]d HH:mm:ss[.fffffff] | [aa]aa-[M[M]]M-[d]d HH:mm:ss[.fffffff] zzz |
[aa]aa-[M[M]]M-[d]d hh:mm:ss[.fff][tt] | [aa]aa-[M[M]]M-[d]d hh:mm[:00][tt] | [aa]aa-[M[M]]M-[d]d hh:mm:ss[.fffffff][tt] | [aa]aa-[M[M]]M-[d]d hh:mm:ss[.fffffff][tt] zzz | |
[aa]aa-[d]d-[M[M]]M HH:mm:ss[.fff] | [aa]aa-[d]d-[M[M]]M HH:mm[:00] | [aa]aa-[d]d-[M[M]]M | [aa]aa-[d]d-[M[M]]M HH:mm:ss[.fffffff] | [aa]aa-[d]d-[M[M]]M HH:mm:ss[.fffffff] zzz |
[aa]aa-[d]d-[M[M]]M hh:mm:ss[.fff][tt] | [aa]aa-[d]d-[M[M]]M hh:mm[:00][tt] | [aa]aa-[d]d-[M[M]]M hh:mm:ss[.fffffff][tt] | [aa]aa-[d]d-[M[M]]M hh:mm:ss[.fffffff][tt] zzz | |
[d]d-[M[M]]M-[aa]aa HH:mm:ss[.fff] | [d]d-[M[M]]M-[aa]aa HH:mm[:00] | [d]d-[M[M]]M-[aa]aa | [d]d-[M[M]]M-[aa]aa HH:mm:ss[.fffffff] | [d]d-[M[M]]M-[aa]aa HH:mm:ss[.fffffff] zzz |
[d]d-[M[M]]M-[aa]aa hh:mm:ss[.fff][tt] | [d]d-[M[M]]M-[aa]aa hh:mm[:00][tt] | [d]d-[M[M]]M-[aa]aa hh:mm:ss[.fffffff][tt] | [d]d-[M[M]]M-[aa]aa hh:mm:ss[.fffffff][tt] zzz | |
[d]d-[aa]aa-[M[M]]M HH:mm:ss[.fff] | [d]d-[aa]aa-[M[M]]M HH:mm[:00] | [d]d-[aa]aa-[M[M]]M | [d]d-[aa]aa-[M[M]]M HH:mm:ss[.fffffff] | [d]d-[aa]aa-[M[M]]M HH:mm:ss[.fffffff] zzz |
[d]d-[aa]aa-[M[M]]M hh:mm:ss[.fff][tt] | [d]d-[aa]aa-[M[M]]M hh:mm[:00][tt] | [d]d-[aa]aa-[M[M]]M hh:mm:ss[.fffffff][tt] | [d]d-[aa]aa-[M[M]]M hh:mm:ss[.fffffff][tt] zzz |
Detalles:
Para separar los valores de mes, día y año, puede usar " - ", " / " o ". '. Para simplificar, en la tabla solo se usa el separador " - ".
Para especificar el mes como texto, use tres o más caracteres. Los meses con uno o dos caracteres se interpretan como un número.
Para separar valores de hora, use el símbolo " : ".
Las letras entre corchetes son opcionales.
Las letras "tt" designan
AM|PM|am|pm
. AM es el valor predeterminado. Cuando se especifica "tt", el valor de hora (hh) debe estar comprendido entre 0 y 12.Las letras "zzz" designan la diferencia de zona horaria de la zona horaria actual del sistema en el formato
{+|-}HH:ss]
.
Inserción de literales en tipos numéricos
En las tablas siguientes se definen las reglas de formato y conversión predeterminadas para cargar un valor literal en una columna PDW de SQL Server que usa un tipo numérico.
Tipo de datos bit
En la tabla siguiente se definen el formato predeterminado y las reglas para cargar valores literales en una columna de tipo bit. Una cadena vacía ('') o una cadena que solo contiene espacios en blanco (" ") se convierte en 0.
Tipo de datos de entrada | Ejemplos de datos de entrada | Conversión al tipo de datos bit |
---|---|---|
Literal de cadena en formato entero | "ffffffffff" Ejemplo: "1" o "321" |
Un valor entero con formato de literal de cadena no puede contener un valor negativo. Por ejemplo, el valor "-123" genera un error. Un valor mayor que 1 se convierte en 1. Por ejemplo, el valor "123" se convierte en 1. |
Literal de cadena | "TRUE" o "FALSE" Ejemplo: "true" |
El valor "TRUE" se convierte en 1; el valor "FALSE" se convierte en 0. |
Literal entero | fffffffn Ejemplo: 1 o 321 |
Un valor mayor que 1 o menor que 0 se convierte en 1. Por ejemplo, los valores 123 y -123 se convierten en 1. |
Literal decimal | fffnn.fffn Ejemplo: 1234,5678 |
Un valor mayor que 1 o menor que 0 se convierte en 1. Por ejemplo, los valores 123,45 y -123,45 se convierten en 1. |
Tipo de datos decimal
En la tabla siguiente se definen las reglas para cargar valores literales en una columna de tipo decimal (p,s). Las reglas de conversión de datos son las mismas que para SQL Server. Para más información, vea Conversión de tipos de datos (motor de base de datos) en MSDN.
Tipo de datos de entrada | Ejemplos de datos de entrada |
---|---|
Literal entero | 321312313123 |
Literal decimal | 123344,34455 |
Tipos de datos float y real
En la tabla siguiente se definen las reglas para cargar valores literales en una columna de tipo float o real. Las reglas de conversión de datos son las mismas que para SQL Server. Para más información, vea Conversión de tipos de datos (motor de base de datos) en MSDN.
Tipo de datos de entrada | Ejemplos de datos de entrada |
---|---|
Literal entero | 321312313123 |
Literal decimal | 123344,34455 |
Literal de punto flotante | 3,12323E+14 |
Tipos de datos int, bigint, tinyint, smallint
En la tabla siguiente se definen las reglas para cargar valores literales en una columna de tipo int, bigint, tinyint o smallint. El origen de datos no puede superar el intervalo permitido para el tipo de datos especificado. Por ejemplo, el intervalo de tinyint es de 0 a 255, y el intervalo de int es de -2.147.483.648 a 2.147.483.647.
Tipo de datos de entrada | Ejemplos de datos de entrada | Conversión a tipos de datos enteros |
---|---|---|
Literal entero | 321312313123 | |
Literal decimal | 123344,34455 | Los valores situados a la derecha del separador decimal se truncan. |
Tipos de datos money y smallmoney
Los valores literales de moneda se representan como una cadena de números con un separador decimal y un símbolo de moneda opcional como prefijo. El origen de datos no puede superar el intervalo permitido para el tipo de datos especificado. Por ejemplo, el intervalo de smallmoney es de -214.748.3648 a 214.748.3647 y el de money es de -922.337.203.685.477,5808 a 922.337.203.685.477,5807. En la tabla siguiente se definen las reglas para cargar valores literales en una columna de tipo money o smallmoney.
Tipo de datos de entrada | Ejemplos de datos de entrada | Conversión al tipo de datos money o smallmoney |
---|---|---|
Literal entero | 321312 | Los dígitos que faltan después del separador decimal se establecen en 0 cuando se inserta el valor. Por ejemplo, el literal 12345 se inserta como 12345,0000 |
Literal decimal | 123344,34455 | Si el número de dígitos después del separador decimal supera los 4, el valor se redondea al valor más cercano. Por ejemplo, el valor 123344,34455 se inserta como 123344,3446. |
Literal de moneda | $123456,7890 | El símbolo de moneda no se inserta con el valor. Si el número de dígitos después del separador decimal supera los 4, el valor se redondea al valor más cercano. |
Inserción de literales en tipos de cadena
En la tabla siguiente se definen el formato predeterminado y las reglas de conversión para cargar un valor literal en una columna de PDW de SQL Server en la que se usa un tipo de cadena.
Tipos de datos char, varchar, nchar y nvarchar
En la tabla siguiente se definen el formato predeterminado y las reglas para cargar valores literales en una columna de tipo char, varchar, nchar y nvarchar. La longitud del origen de datos no puede superar el tamaño especificado para el tipo de datos. Si la longitud del origen de datos es menor que el tamaño del tipo de datos char o nchar, los datos se rellenan a la derecha con espacios en blanco para alcanzar el tamaño del tipo de datos.
Tipo de datos de entrada | Ejemplos de datos de entrada | Conversión a tipos de datos de caracteres |
---|---|---|
Literal de cadena | Formato: "cadena de caracteres" Ejemplo: "abc" |
N/D |
Literal de cadena Unicode | Formato: N"cadena de caracteres" Ejemplo: N"abc" |
N/D |
Literal entero | Formato: ffffffffffn Ejemplo: 321312313123 |
N/D |
Literal decimal | Formato: ffffff,fffffff Ejemplo: 12344,34455 |
N/D |
Literal de moneda | Formato: $ffffff,fffnn Ejemplo: $123456,99 |
El símbolo de moneda opcional no se inserta con el valor. Para insertar el símbolo de moneda, inserte el valor como un literal de cadena. Esto coincidirá con el formato del cargador, que procesa cada literal como un literal de cadena. No se permiten comas. Si el número de dígitos después del separador decimal es superior a 2, el valor se redondea al valor más cercano. Por ejemplo, el valor 123,946789 se inserta como 123,95. Solo se permite el estilo predeterminado 0 (sin comas y dos dígitos después del separador decimal) al usar la función CONVERT para insertar literales de divisa. |
Notas generales
dwloader realiza las mismas conversiones implícitas que SMP de SQL Server, pero no admite todas las conversiones implícitas que admite SMP de SQL Server.
Comentarios
https://aka.ms/ContentUserFeedback.
Proximamente: Ao longo de 2024, retiraremos gradualmente GitHub Issues como mecanismo de comentarios sobre o contido e substituirémolo por un novo sistema de comentarios. Para obter máis información, consulte:Enviar e ver os comentarios