Carga de datos con INSERT en Almacenamiento de datos paralelos
Puede usar la instrucción INSERT de T-SQL para cargar datos en una tabla distribuida o replicada de Almacenamiento de datos paralelos (PDW) de SQL Server. Para más información sobre INSERT, vea INSERT. Para las tablas replicadas y todas las columnas que no son de distribución de una tabla distribuida, PDW usa SQL Server para convertir implícitamente los valores de datos especificados en la instrucción al tipo de datos de la columna de destino. Para más información sobre las reglas de conversión de datos de SQL Server, vea Conversión de tipos de datos para SQL. Pero para las columnas de distribución, PDW solo admite un subconjunto de conversiones implícitas compatibles con SQL Server. Por tanto, cuando use la instrucción INSERT para cargar datos en una columna de distribución, los datos de origen se deben especificar en uno de los formatos definidos en las tablas siguientes.
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 insertar un valor literal en una columna de distribución de tipo binary (n) o varbinary(n).
Tipo de literal | Formato | Reglas de conversión |
---|---|---|
Literal binario | 0xcadena_hexadecimal Ejemplo: 0x12Ef |
Los literales binarios deben tener el prefijo 0x. 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 tipos de fecha y hora se representan mediante valores de caracteres en formatos específicos y se incluyen entre comillas simples. En las tablas siguientes se definen los tipos literales permitidos, el formato y las reglas de conversión para insertar un literal de fecha u hora en una columna de distribución de PDW de SQL Server de tipo datetime, smalldatetime, date, time, datetimeoffset o datetime2.
Tipo de datos datetime
En la tabla siguiente se definen los formatos y las reglas aceptados para insertar valores literales en una columna de distribución de tipo datetime. Cualquier 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 literal | Formato | Reglas de conversión |
---|---|---|
Literal de cadena en formato datetime | "AAAA-MM-DD hh:mm:ss[.nnn]" 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.nnnnnnn" 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-08 12:35:29.1234567" genera un error. |
Tipo de datos smalldatetime
En la tabla siguiente se definen los formatos y las reglas aceptados para insertar valores literales en una columna de distribución de tipo smalldatetime. Cualquier 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 literal | Formato | Reglas de conversión |
---|---|---|
Literal de cadena en formato smalldatetime | "YYYY-MM-DD hh:mm" o "YYYY-MM-DD hh:mm:00" Ejemplo: "2007-05-08 12:00" o "2007-05-08 12:00:00" |
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. |
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 los formatos y las reglas aceptados para insertar valores literales en una columna de distribución de tipo date. Cualquier 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 literal | Formato | Reglas de conversión |
---|---|---|
Literal de cadena en formato date | "AAAA-MM-DD" Ejemplo: "2007-05-08" |
Este es el único formato aceptado. |
Tipo de datos time
En la tabla siguiente se definen los formatos y las reglas aceptados para insertar valores literales en una columna de distribución de tipo time. Cualquier 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 literal | Formato | Reglas de conversión |
---|---|---|
Literal de cadena en formato time | "hh:mm:ss.nnnnnnn" 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". Un valor que tiene una precisión mayor que el tipo de datos de destino se rechaza. |
Tipo de datos datetimeoffset
En la tabla siguiente se definen los formatos y las reglas aceptados para insertar valores literales en una columna de distribución de tipo datetimeoffset (n). El formato predeterminado es "AAAA-MM-DD hh:mm:ss.nnnnnnn {+|-}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 literal | Formato | Reglas de conversión |
---|---|---|
Literal de cadena en formato datetime | "AAAA-MM-DD hh:mm:ss[.nnn]" 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.nnnnnnn" 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.nnnnnnn {+|-} 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 los formatos y las reglas aceptados para insertar valores literales en una columna de distribución de tipo datetime2 (n). El formato predeterminado es "AAAA-MM-DD hh:mm:ss.nnnnnnn". 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 literal | Formato | Reglas de conversión |
---|---|---|
Literal de cadena en formato datetime | "AAAA-MM-DD hh:mm:ss[.nnn]" Ejemplo: "2007-05-08 12:35:29.123" |
Las fracciones de segundo son opcionales y se establecen en 0 cuando se inserta el valor. Un valor que tiene más dígitos fraccionales que el tipo de datos de destino se rechaza. |
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:nnnnnnn" 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. |
Insertar literales en tipos numéricos
En la tabla siguiente se definen los formatos aceptados y las reglas de conversión para insertar un valor literal en una columna de distribución de PDW de SQL Server en la que se usa un tipo numérico.
Tipo de datos bit
En la tabla siguiente se definen los formatos y las reglas aceptados para insertar valores literales en una columna de distribución de tipo bit. Una cadena vacía ('') o una cadena que solo contiene espacios en blanco (" ") se convierte en 0.
Tipo de literal | Formato | Reglas de conversión |
---|---|---|
Literal de cadena en formato entero | "nnnnnnnnnn" 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 | nnnnnnnn 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 | nnnnn.nnnn 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 los formatos y reglas aceptados para insertar valores literales en una columna de distribución 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 en MSDN.
Tipo de literal | Formato |
---|---|
Literal de cadena en formato entero | "nnnnnnnnnnnn" Ejemplo: "321312313123" |
Literal de cadena en formato decimal | "nnnnnn,nnnnn" Ejemplo: "12344,34455" |
Literal entero | nnnnnnnnnnnn Ejemplo: 321312313123 |
Literal decimal | nnnnnn,nnnnn Ejemplo: "12344,34455" |
Tipos de datos float y real
En la tabla siguiente se definen los formatos y las reglas aceptados para insertar valores literales en una columna de distribución 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 en MSDN.
Tipo de literal | Formato |
---|---|
Literal de cadena en formato entero | "nnnnnnnnnnnn" Ejemplo: "321312313123" |
Literal de cadena en formato decimal | "nnnnnn,nnnnn" Ejemplo: "12344,34455" |
Literal de cadena en formato de punto flotante | "n,nnnnnE+nn" Ejemplo: "3,12323E+14" |
Literal entero | nnnnnnnnnnnn Ejemplo: 321312313123 |
Literal decimal | nnnnnn,nnnnn Ejemplo: 123344,34455 |
Literal de punto flotante | n,nnnnnE+nn Ejemplo: 3,12323E+14 |
Tipos de datos int, bigint, tinyint, smallint
En la tabla siguiente se definen los formatos y las reglas aceptados para insertar valores literales en una columna de distribución 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 literal | Formato | Reglas de conversión |
---|---|---|
Literal de cadena en formato entero | "nnnnnnnnnnnnnn" Ejemplo: "321312313123" |
Ninguno |
Literal entero | nnnnnnnnnnnnnn Ejemplo: 321312313123 |
Ninguno |
Literal decimal | nnnnnn,nnnnn Ejemplo: 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 números con un separador decimal opcional y un símbolo de moneda 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 los formatos y las reglas aceptados para insertar valores literales en una columna de distribución de tipo money o smallmoney.
Tipo de literal | Formato | Reglas de conversión |
---|---|---|
Literal de cadena en formato entero | "nnnnnnnn" Ejemplo: "123433" |
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 de cadena en formato decimal | "nnnnnn,nnnnn" Ejemplo: "12344,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 cadena en formato money | "$nnnnnn,nnnn" Ejemplo: "$123456,7890" |
El símbolo de moneda opcional 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. |
Literal entero | nnnnnnnn Ejemplo: 123433 |
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 | nnnnnn,nnnnn Ejemplo: 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 | $nnnnnn,nnnn Ejemplo: $123456,7890 |
El símbolo de moneda opcional 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 los formatos aceptados y las reglas de conversión para insertar 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 los formatos y las reglas aceptados para insertar valores literales en una columna de distribución 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 literal | Formato | Reglas de conversión |
---|---|---|
Literal de cadena | Formato: "cadena de caracteres" Ejemplo: "abc" |
Ninguno |
Literal de cadena Unicode | Formato: N"cadena de caracteres" Ejemplo: N"abc" |
Ninguno |
Literal entero | Formato: nnnnnnnnnnn Ejemplo: 321312313123 |
Ninguno |
Literal decimal | Formato: nnnnnn,nnnnnnn Ejemplo: 12344,34455 |
Ninguno |
Literal de moneda | Formato: $nnnnnn,nnnnn Ejemplo: $123456,99 |
El símbolo de moneda 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 de la herramienta dwloader, 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. |