Cargador de línea de comandos dwloader para Parallel Data Warehouse

dwloader es una herramienta de línea de comandos de Parallel Data Warehouse (PDW) que carga filas de tabla de forma masiva en una tabla existente. Al cargar filas, puede agregar todas las filas al final de la tabla (modo anexar o modo fastappend), anexar nuevas filas y actualizar filas existentes (modo upsert) o eliminar todas las filas existentes antes de cargar e insertar todas las filas en una tabla vacía (modo de recarga).

Proceso para cargar datos

  1. Prepare los datos de origen.

    Use su propio proceso de ETL para crear los datos de origen que desea cargar. Los datos de origen deben tener formato para que coincidan con el esquema de la tabla de destino. Almacene los datos de origen en uno o varios archivos de texto y copie los archivos de texto en el mismo directorio del servidor de carga. Para obtener información sobre el servidor de carga, consulte Adquisición y configuración de un servidor de carga

  2. Prepare las opciones de carga.

    Decida qué opciones de carga va a usar. Almacene las opciones de carga en un archivo de configuración. Copie el archivo de configuración en una ubicación local en el servidor de carga. Las opciones de configuración de dwloader se describen en esta sección.

  3. Prepare las opciones de error de carga.

    Decida cómo desea que dwloader controle las filas que no se pueden cargar. Para realizar la carga, dwloader carga primero los datos en una tabla de almacenamiento provisional y, a continuación, transfiere los datos a la tabla de destino. A medida que el cargador carga datos en la tabla de almacenamiento provisional, realiza un seguimiento del número de filas que no se pueden cargar. Por ejemplo, las filas que no tienen el formato correcto no se cargarán. Las filas con error se copian en un archivo de rechazo. De forma predeterminada, la carga se anula después del primer rechazo a menos que especifique un umbral de rechazo diferente.

  4. Instale dwloader.

    Instale dwloader en el servidor de carga si aún no está instalado.

  1. Ejecute dwloader.

    Inicie sesión en el servidor de carga y ejecute el archivo ejecutable dwloader.exe con las opciones de línea de comandos adecuadas.

  2. Verifique los resultados.

    Puede comprobar el archivo de filas con errores (especificado con -R) para ver si alguna fila no se ha podido cargar. Si este archivo está vacío, todas las filas se han cargado correctamente. dwloader es transaccional, por lo que, si se produce un error en cualquier paso (que no sea de rechazo de filas), todos los pasos se revertirán a su estado inicial.

Sintaxis

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 ]   
}  

Argumentos

-h
Muestra información de ayuda sencilla sobre el uso del cargador. La ayuda sólo se muestra si no se especifican otros parámetros de línea de comandos.

-Ulogin_name
Inicio de sesión de autenticación de SQL Server válido con los permisos adecuados para realizar la carga.

-Ppassword
Contraseña de un login_name de autenticación de SQL Server.

-W
Usa la autenticación de Windows. (No se requieren login_name ni contraseña).

-fparameter_file_name
Use un archivo de parámetros, parameter_file_name, en lugar de parámetros de la línea de comandos. parameter_file_name puede contener cualquier parámetro de la línea de comandos, excepto user_name y password. Si se especifica un parámetro en la línea de comandos y en el archivo de parámetros, la línea de comandos invalida el archivo de parámetros.

El archivo de parámetros contiene un parámetro, sin el prefijo -, en cada línea.

Ejemplos:

rt=percentage

rv=25

-Starget_appliance
Especifica el dispositivo PDW de SQL Server que recibirá los datos cargados.

Para las conexiones Infiniband, target_appliance se especifica como <appliance-name>-SQLCTL01. Para configurar esta conexión con nombre, consulte Configurar adaptadores de red InfiniBand.

En el caso de las conexiones Ethernet, target_appliance es la dirección IP del clúster de nodos de control.

Si se omite, dwloader tiene como valor predeterminado el valor especificado durante la instalación de dwloader.

-Ttarget_database_name.[esquema].Table_name
Nombre de tres partes de la tabla de destino.

-Isource_data_location
Ubicación de uno o varios archivos de código fuente que se van a cargar. Cada archivo de código fuente debe ser un archivo de texto o un archivo de texto comprimido con gzip. Sólo se puede comprimir un archivo de código fuente en cada archivo gzip.

Para dar formato a un archivo de código fuente:

  • El archivo de código fuente debe tener el formato de acuerdo con las opciones de carga.

  • Cada línea de un archivo de código fuente contiene los datos de una fila de tabla. Los datos de origen deben coincidir con el esquema de la tabla de destino. El orden de las columnas y los tipos de datos también deben coincidir. Cada campo de la fila representa una columna de la tabla de destino.

  • De forma predeterminada, los campos tienen longitud variable y están separados por un delimitador. Para especificar el tipo de delimitador, use las opciones <variable_length_column_options> de la línea de comandos. Para especificar campos de longitud fija, use las opciones <fixed_width_column_options> de la línea de comandos.

Para especificar la ubicación de datos de origen:

  • La ubicación de datos de origen puede ser una ruta de acceso de red o una ruta de acceso local a un directorio en el servidor de carga.

  • Para especificar todos los archivos de un directorio, escriba la ruta de acceso del directorio seguida del carácter comodín, *. El cargador no carga archivos desde subdirectorios que se encuentren en la ubicación de datos de origen. El cargador produce errores cuando existe un directorio en un archivo gzip.

  • Para especificar algunos de los archivos de un directorio, use una combinación de caracteres y el carácter comodín, *.

Para cargar varios archivos con un comando:

  • Todos los archivos deben existir en el mismo directorio.

  • Los archivos deben ser o bien todos archivos de texto, o bien todos archivos gzip o una combinación de archivos de texto y archivos gzip.

  • Ninguno de los archivos puede contener información de encabezado.

  • Todos los archivos deben usar el mismo tipo de codificación de caracteres. Vea la opción -e.

  • Todos los archivos deben cargarse en la misma tabla.

  • Todos los archivos se concatenarán y cargarán como si fueran un sólo archivo y las filas rechazadas irán a un único archivo de rechazo.

Ejemplos:

  • -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\*

-Rload_failure_file_name
Si hay errores de carga, dwloader almacena la fila que no se ha podido cargar, así como la descripción del error y la información de error en un archivo denominado load_failure_file_name. Si este archivo ya existe, dwloader sobrescribirá el archivo existente. load_failure_file_name se crea cuando se produce el primer error. Si todas las filas se cargan correctamente, no se crea load_failure_file_name .

-fhnumber_header_rows
Número de líneas (filas) que se omitirán al principio de source_data_file_name. El valor predeterminado es 0.

<variable_length_column_options>
Las opciones de un source_data_file_name que tiene columnas de longitud variable delimitadas por caracteres. De forma predeterminada, source_data_file_name contiene caracteres ASCII en columnas de longitud variable.

En el caso de los archivos ASCII, los valores NULL se representan colocando delimitadores consecutivamente. Por ejemplo, en un archivo delimitado por canalización ("|"), un valor NULL se indica mediante "||". En un archivo delimitado por comas, un valor NULL se indica mediante ",,". Además, se debe especificar la opción -E (--emptyStringAsNull). Para obtener más información sobre -E, vea a continuación.

-echaracter_encoding
Especifica un tipo de codificación de caracteres para los datos que se van a cargar desde el archivo de datos. Las opciones son ASCII (valor predeterminado), UTF8, UTF16 o UTF16BE, donde UTF16 es little endian y UTF16BE es big endian. Estas opciones no distinguen entre mayúsculas y minúsculas.

-tfield_delimiter
Delimitador para cada campo (columna) de la fila. El delimitador de campo es uno o varios de estos caracteres de escape ASCII o valores hexa ASCII.

Nombre Carácter de escape Carácter hexad
Tabulador \t 0x09
Retorno de carro (CR) \r 0x0d
Avance de línea (LF) \n 0x0a
CRLF \r\n 0x0d0x0a
Coma ',' 0x2c
Comilla doble \" 0x22
Comilla simple \' 0x27

Para especificar el carácter de canalización en la línea de comandos, escríbalo entre comillas dobles, "|". Esto evitará la interpretación incorrecta por parte del analizador de línea de comandos. Otros caracteres se incluyen entre comillas simples.

Ejemplos:

-t "|"

-t ' '

-t 0x0a

-t \t

-t '~|~'

-rrow_delimiter
Delimitador para cada fila del archivo de datos de origen. El delimitador de fila consiste en uno o varios valores ASCII.

Para especificar un retorno de carro (CR), un avance de línea (LF) o un carácter de tabulación como delimitador, puede usar los caracteres de escape (\r, \n, \t) o sus valores hexa (0x, 0d, 09). Para especificar cualquier otro carácter especial como delimitador, use su valor hexa.

Ejemplos de CR+LF:

-r \r\n

-r 0x0d0x0a

Ejemplos de CR:

-r \r

-r 0x0d

Ejemplos de LF:

-r \n

-r 0x0a

Se requiere un LF para Unix. En Windows no es necesario un CR.

-sstring_delimiter
El delimitador de campo de tipos de datos String en el archivo de entrada de texto delimitado. El delimitador de cadena consiste en uno o varios valores ASCII. Se puede especificar como un carácter (por ejemplo, -s *) o como un valor hexa (por ejemplo, -s 0x22 para una comilla doble).

Ejemplos:

-s *

-s 0x22

< fixed_width_column_options>
Las opciones de un archivo de datos de origen que tiene columnas de longitud fija. De forma predeterminada, source_data_file_name contiene caracteres ASCII en columnas de longitud variable.

No se admiten columnas de ancho fijo cuando -e es UTF8.

-wfixed_width_config_file
Ruta de acceso y nombre del archivo de configuración que especifica el número de caracteres de cada columna. Se deben especificar todos los campos.

Este archivo debe residir en el servidor de carga. La ruta de acceso puede ser UNC, absoluta o relativa. Cada línea de fixed_width_config_file contiene el nombre de una columna y el número de caracteres de esa columna. Hay una línea por columna, como se indica a continuación, y el orden del archivo debe coincidir con el orden de la tabla de destino:

column_name=num_chars

column_name=num_chars

Ejemplo de archivo de configuración de ancho fijo:

SalesCode=3

SalesID=10

Líneas de ejemplo en source_data_file_name:

230Shirts0056

320Towels1356

En el ejemplo anterior, la primera fila cargada tendrá SalesCode='230' y SalesID='Shirts0056'. La segunda fila cargada tendrá SalesCode='320' y SaleID='Towels1356'.

Para obtener información sobre cómo controlar los espacios iniciales y finales o la conversión de tipos de datos en modo de ancho fijo, consulte Reglas de conversión de tipos de datos para dwloader.

-echaracter_encoding
Especifica un tipo de codificación de caracteres para los datos que se van a cargar desde el archivo de datos. Las opciones son ASCII (valor predeterminado), UTF8, UTF16 o UTF16BE, donde UTF16 es little endian y UTF16BE es big endian. Estas opciones no distinguen entre mayúsculas y minúsculas.

No se admiten columnas de ancho fijo cuando -e es UTF8.

-rrow_delimiter
Delimitador para cada fila del archivo de datos de origen. El delimitador de fila consiste en uno o varios valores ASCII.

Para especificar un retorno de carro (CR), un avance de línea (LF) o un carácter de tabulación como delimitador, puede usar los caracteres de escape (\r, \n, \t) o sus valores hexa (0x, 0d, 09). Para especificar cualquier otro carácter especial como delimitador, use su valor hexa.

Ejemplos de CR+LF:

-r \r\n

-r 0x0d0x0a

Ejemplos de CR:

-r \r

-r 0x0d

Ejemplos de LF:

-r \n

-r 0x0a

Se requiere un LF para Unix. En Windows no es necesario un CR.

-D { ymd | ydm | mdy | myd | dmy | dym | custom_date_format }
Especifica el orden del mes (m), día (d) y año (y) para todos los campos datetime del archivo de entrada. El orden predeterminado es ymd. Para especificar varios formatos de orden para el mismo archivo de código fuente, use la opción -dt.

ymd | dmy
ydm y dmy permiten los mismos formatos de entrada. Ambos permiten que el año esté al principio o al final de la fecha. Por ejemplo, para los formatos de fecha ydm y dmy, podría tener 2013-02-03 o 02-03-2013 en el archivo de entrada.

ydm
Solo se puede cargar la entrada con formato ydm en columnas de tipo de datos datetime y smalldatetime. No se pueden cargar valores ydm en una columna del tipo de datos datetime2, date o datetimeoffset.

mdy
mdy permite <mes><espacio><día><coma><año>.

Ejemplos de datos de entrada mdy para el 1 de enero de 1975:

  • 1 enero 1975

  • 1 ene 1975

  • Ene/1/75

  • 01011975

myd
Ejemplos de archivos de entrada del 04 de marzo de 2010: 03-2010-04, 3/2010/4

dym
Ejemplos de archivos de entrada para el 04 de marzo de 2010: 04-2010-03, 4/2010/3

custom_date_format
custom_date_format es un formato de fecha personalizado (por ejemplo, MM/dd/aaaa) e incluido sólo para la compatibilidad con versiones anteriores. dwloader no impone el formato de fecha personalizado. En su lugar, cuando se especifica un formato de fecha personalizado, dwloader lo convertirá en la configuración correspondiente de ymd, ydm, mdy, myd, dym o dmy.

Por ejemplo, si especifica -D MM/dd/aaaa, dwloader espera que se ordene toda la entrada de fecha con el mes primero, después el día y después el año (mdy). No impone 2 caracteres para el mes, 2 dígitos para los días y años de 4 dígitos, tal como se especifica en el formato de fecha personalizado. Estos son algunos ejemplos de formas en que se puede dar formato a las fechas en el archivo de entrada cuando el formato de fecha es -D MM/dd/aaaa: 01/02/2013, Enero.02.2013, 1/2/2013

Para obtener información de formato más completa, consulte Reglas de conversión de tipos de datos para dwloader.

-dtdatetime_format_file
Cada formato datetime se especifica en un archivo denominado datetime_format_file. A diferencia de los parámetros de la línea de comandos, los parámetros de archivo que incluyen espacios no deben escribirse entre comillas dobles. No se puede modificar el formato datetime al mismo tiempo que se cargan datos. El archivo de datos de origen y su columna correspondiente en la tabla de destino deben tener el mismo formato.

Cada línea contiene el nombre de una columna en la tabla de destino y su formato datetime.

Ejemplos:

LastReceiptDate=ymd

ModifiedDate=dym

-dstaging_database_name
Nombre de la base de datos que contendrá la tabla de almacenamiento provisional. El valor predeterminado es la base de datos especificada con la opción -T, que es la base de datos de la tabla de destino. Para obtener más información sobre el uso de una base de datos provisional, consulte Creación de una base de datos provisional.

-Mload_mode_option
Especifica qué operación se aplicará a los datos: anexar, actualizar/insertar (upsert) o recargar. El modo predeterminado es anexar.

anexar
El cargador inserta filas al final de las filas existentes en la tabla de destino.

fastappend
El cargador inserta filas directamente, sin usar una tabla temporal, al final de las filas existentes en la tabla de destino. fastappend requiere la opción de varias transacciones (-m). No se puede especificar una base de datos provisional al usar fastappend. No es posible revertir cambios con fastappend, lo que significa que el proceso de carga debe controlar la recuperación de una carga con errores o anulada.

upsert -Kmerge_column [ ,...n ]
El cargador usa la instrucción Combinar de SQL Server para actualizar las filas existentes e insertar nuevas filas.

La opción -K especifica la columna o columnas en las que basar la combinación. Estas columnas forman una clave de combinación, que debe representar a una fila única. Si la clave de combinación existe en la tabla de destino, la fila se actualiza. Si la clave de combinación no existe en la tabla de destino, se anexará la fila.

Para las tablas distribuidas por hash, la clave de combinación debe ser o incluir la columna de distribución.

Para las tablas replicadas, la clave de combinación es la combinación de una o varias columnas. Estas columnas se especifican según las necesidades de la aplicación.

Varias columnas deben estar separadas por comas sin espacios o separadas por comas con espacios y entre comillas simples.

Si dos filas de la tabla de origen tienen valores de clave de combinación coincidentes, sus respectivas filas deben ser idénticas.

recargar
El cargador trunca la tabla de destino antes de insertar los datos de origen.

-bbatchsize
Recomendado solo para uso por parte del soporte técnico de Microsoft, batchsize es el tamaño del lote de SQL Server para la copia masiva que DMS realiza en instancias de SQL Server en los nodos de ejecución. Cuando se especifica batchsize, PDW de SQL Server invalida el tamaño de carga por lotes que se calcula dinámicamente para cada carga.

A partir de PDW de SQL Server 2012, el nodo de control calcula dinámicamente un tamaño de lote para cada carga de forma predeterminada. Este cálculo automático se basa en varios parámetros, como el tamaño de memoria, el tipo de tabla de destino, el esquema de tabla de destino, el tipo de carga, el tamaño de archivo y la clase de recursos del usuario.

Por ejemplo, si el modo de carga es FASTAPPEND y la tabla tiene un índice de almacén de columnas agrupado, PDW de SQL Server intentará usar de forma predeterminada un tamaño de lote de 1 048 576 para que los grupos de filas se conviertan en CERRADO y se carguen directamente en el almacén de columnas sin pasar por el almacén delta. Si la memoria no permite un tamaño de lote de 1 048 576, dwloader elegirá un tamaño de lote más pequeño.

Si el tipo de carga es FASTAPPEND, batchsize se aplica a la carga de datos en la tabla; de lo contrario, batchsize se aplica a la carga de datos en la tabla de almacenamiento provisional.

<reject_options>
Especifica opciones para determinar el número de errores de carga que permitirá el cargador. Si los errores de carga superan el umbral, el cargador se detendrá y no hará “commit” en ninguna fila.

-rt { value | percentage }
Especifica si -reject_value en la opción -rvreject_value es un número literal de filas (valor) o una tasa de error (porcentaje). El valor predeterminado es valor.

La opción de porcentaje es un cálculo en tiempo real que se produce a intervalos según la opción -rs.

Por ejemplo, si el cargador intenta cargar 100 filas y 25 dan error y 75 se cargan correctamente, la tasa de error es del 25 %.

-rvreject_value
Especifica el número o porcentaje de rechazos de fila que se permiten antes de detener la carga. La opción -rt determina si reject_value hace referencia al número de filas o al porcentaje de filas.

El valor predeterminado de reject_value es 0.

Cuando se usa con el valor -rt, el cargador detiene la carga cuando el recuento de filas rechazada supera reject_value.

Cuando se usa con el porcentaje -rt, el cargador calcula el porcentaje a intervalos (opción -rs). Por lo tanto, el porcentaje de filas con error puede superar reject_value.

-rsreject_sample_size
Se usa con la opción -rt percentage para especificar las comprobaciones de porcentaje incremental. Por ejemplo, si reject_sample_size es 1000, el cargador calcula el porcentaje de filas con errores después de haber intentado cargar 1000 filas. Recalcula el porcentaje de filas con errores después de intentar cargar 1000 filas más.

-c
Quita los caracteres de espacio en blanco del lado izquierdo y derecho de los campos char, nchar, varchar y nvarchar. Convierte cada campo que contiene sólo caracteres de espacio en blanco en una cadena vacía.

Ejemplos:

' ' se trunca a ''

' abc ' se trunca a 'abc'

Cuando -c se usa con -E, la operación -E se ejecuta primero. Los campos que contienen sólo caracteres de espacio en blanco se convierten en una cadena vacía y no en NULL.

-E
Convierte cadenas vacías en NULL. El valor predeterminado es no realizar estas conversiones.

-m
Usa el modo multitransacción para la segunda fase de carga; al cargar datos de la tabla de almacenamiento provisional en una tabla distribuida.

Con -m, PDW de SQL Server realiza y hace “commit” de cargas en paralelo. Esto funciona mucho más rápido que el modo de carga predeterminado, pero no es seguro para transacciones.

Sin -m, PDW de SQL Server realiza y hace “commit” de las cargas en serie entre las distribuciones dentro de cada nodo de ejecución y simultáneamente en todos los nodos de proceso. Este método es más lento que el modo multitransacción, pero es seguro para transacciones.

-m es opcional para anexar, recargar y upsert.

-m es necesario para fastappend.

-m no se puede usar con tablas replicadas.

-m sólo se aplica a la segunda fase de carga. No se aplica a la primera fase de carga; carga de datos en la tabla de almacenamiento provisional.

No es posible revertir operaciones con el modo de varias transacciones, lo que significa que el proceso de carga debe controlar la recuperación de una carga con errores o anulada debe controlarse.

Se recomienda usar -m sólo al cargar en una tabla vacía, de modo que sea posible recuperar y no se produzcan pérdidas de datos. Para recuperar de un error de carga: quite la tabla de destino, resuelva el problema de carga, vuelva a crear la tabla de destino y vuelva a ejecutar la carga.

-N
Compruebe que el dispositivo de destino tiene un certificado PDW de SQL Server válido de una entidad de confianza. Úselo para facilitar garantizar que un atacante no secuestre los datos y los envíe a una ubicación no autorizada. El certificado ya debe estar instalado en el dispositivo. La única manera admitida de instalar el certificado es que el administrador del dispositivo lo instale mediante la herramienta Configuration Manager. Pregunte al administrador del dispositivo si no está seguro de que el dispositivo tiene instalado un certificado de confianza.

-se
Omite la carga de archivos vacíos. También omite la descompresión de archivos gzip vacíos.

-l
Disponible con la actualización CU7.4, especifica la longitud máxima de fila (en bytes) que se puede cargar. Los valores válidos son enteros entre 32 768 and 33 554 432. Úselo sólo cuando sea necesario para cargar filas grandes (mayores que 32 KB), ya que asignará más memoria en el cliente y el servidor.

Valores de código de retorno

0 (correcto) u otro valor entero (error)

En una ventana Comandos o un archivo por lotes, use errorlevel para mostrar el código de retorno. Por ejemplo:

dwloader  
echo ReturnCode=%errorlevel%  
if not %errorlevel%==0 echo Fail  
if %errorlevel%==0 echo Success  

Al usar PowerShell, use $LastExitCode.

Permisos

Requiere el permiso CARGAR y los permisos aplicables (INSERTAR, ACTUALIZAR, ELIMINAR) en la tabla de destino. Requiere el permiso CREAR (para crear una tabla temporal) en la base de datos provisional. Si no se usa una base de datos provisional, se requiere el permiso CREAR en la base de datos de destino.

Notas generales

Para obtener información sobre las conversiones de tipos de datos al cargar con dwloader, consulte Reglas de conversión de tipos de datos para dwloader.

Si un parámetro incluye uno o varios espacios, incluya el parámetro entre comillas dobles.

Debe ejecutar el cargador desde su ubicación de instalación. El ejecutable dwloader está preinstalado con el dispositivo y se encuentra en el directorio C:\Archivos de programa\Microsoft SQL Server Data Warehouse\DWLoader.

Puede invalidar un parámetro especificado en el archivo de parámetros (opción -f) si lo especifica como parámetro de la línea de comandos.

Puede ejecutar varias instancias del cargador simultáneamente. El número máximo de instancias del cargador está preconfigurado y no se puede cambiar.

Los datos cargados pueden requerir más o menos espacio en el dispositivo que en la ubicación de origen. Puede realizar importaciones de prueba con subconjuntos de datos para estimar el consumo de disco.

Aunque dwloader es un proceso de transacción y revertirá correctamente en caso de error, no se puede revertir una vez completada correctamente la carga masiva. Para cancelar un proceso activo de dwloader, escriba CTRL+C.

Limitaciones y restricciones

El tamaño total de todas las cargas que se producen simultáneamente debe ser menor que LOG_SIZE para la base de datos y se recomienda que el tamaño total de todas las cargas simultáneas sea inferior al 50 % de LOG_SIZE. Para lograr esta limitación de tamaño, puede dividir cargas grandes en varios lotes. Para más información sobre LOG_SIZE, consulte CREAR BASE DE DATOS

Al cargar varios archivos con un comando de carga, todas las filas rechazadas se escriben en el mismo archivo de rechazo. El archivo de rechazo no muestra qué archivo de entrada contiene cada fila rechazada.

La cadena vacía no debe usarse como delimitador. Cuando se usa una cadena vacía como delimitador de fila, se producirá un error en la carga. Cuando se usa como delimitador de columna, la carga omite el delimitador y sigue usando el valor predeterminado "|" como delimitador de columna. Cuando se usa como delimitador de cadena, se omite la cadena vacía y se aplica el comportamiento predeterminado.

Comportamiento del bloqueo

el comportamiento de bloqueo de dwloader varía en función de load_mode_option.

  • anexar: anexar es la opción recomendada y la más común. Anexar carga datos en una tabla de almacenamiento provisional. Cada una de ellas se describe con detalle más abajo.

  • fastappend: fastappend carga directamente en la tabla final mediante un bloqueo de tabla ExclusiveUpdate y es el único modo que no usa una tabla de almacenamiento provisional.

  • recarga: los datos se cargan en una tabla de almacenamiento provisional. Requiere un bloqueo exclusivo tanto en la tabla de almacenamiento provisional como en la tabla final. No se recomienda recargar en caso de operaciones simultáneas.

  • upsert: actualizar/insertar (upsert) carga datos en una tabla de almacenamiento provisional y, a continuación, realiza una operación de combinación de la tabla de almacenamiento provisional a la tabla final. Upsert (actualizar/insertar) no requiere bloqueos exclusivos en la tabla final. El rendimiento puede variar al usar actualizar/insertar (upsert). Pruebe el comportamiento en su entorno.

Comportamiento del bloqueo

Bloqueo del modo anexar

Anexar se puede ejecutar en modo multitransaccional (mediante el argumento -m), pero no es seguro para transacciones. Por lo tanto, anexar debe usarse como una operación transaccional (sin usar el argumento -m). Desafortunadamente, durante la última operación INSERCIÓN-SELECCIÓN, el modo transaccional es aproximadamente seis veces más lento que el modo multitransaccional.

El modo anexar carga datos en dos fases. La fase uno carga datos del archivo de código fuente en una tabla de almacenamiento provisional simultáneamente (se puede producir fragmentación). La fase dos carga datos de la tabla de almacenamiento provisional a la tabla final. La segunda fase realiza una operación INSERCIÓN EN...SELECCIÓN CON (TABLOCK). En la tabla siguiente se muestra el comportamiento de bloqueo en la tabla final y el comportamiento de registro al usar el modo anexar:

Tipo de tabla Multitransacción
Modo (-m)
La tabla está vacía Simultaneidad admitida Registro
Montón Mínimo
Montón No Mínimo
Montón No No Mínimo
Montón No No No Mínimo
CI No Mínimo
CI No Completo
CI No No Mínimo
CI No No Completo

En la tabla anterior se muestra dwloader usando la carga en modo anexar en un montón o en una tabla de índice agrupado (CI), con o sin la marca de varias transacciones, y la carga en una tabla vacía o en una tabla no vacía. El comportamiento de bloqueo y registro de cada una de estas combinaciones de carga se muestra en la tabla. Por ejemplo, la (2ª) fase de carga en modo anexar en un índice agrupado sin modo transaccional múltiple y en una tabla vacía hará que PDW cree un bloqueo exclusivo en la tabla y el registro sea mínimo. Esto significa que un cliente no podrá realizar la (2ª) fase de carga y consultar simultáneamente en una tabla vacía. Sin embargo, al cargar con la misma configuración en una tabla no vacía, PDW no emitirá un bloqueo exclusivo en la tabla y la simultaneidad será posible. Desafortunadamente, se produce un registro completo, lo que ralentiza el proceso.

Ejemplos

A. Ejemplo simple de dwloader

En el ejemplo siguiente se muestra el inicio del cargador con solo las opciones necesarias seleccionadas. Otras opciones se toman del archivo de configuración global, loadparamfile.txt.

Ejemplo con autenticación de SQL Server.

--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  

En este ejemplo se usa la autenticación de 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  

Ejemplo de uso de argumentos para un archivo de código fuente y un archivo de error.

--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. Carga de datos en una tabla AdventureWorks

El ejemplo siguiente forma parte de un script por lotes que carga datos en AdventureWorksPDW2012. Para ver el script completo, abra el archivo aw_create.bat que se incluye con el paquete de instalación AdventureWorksPDW2012 .

El siguiente fragmento de código de script usa dwloader para cargar datos en las tablas DimAccount y DimCurrency. Este script usa una dirección Ethernet. Si estuviera usando InfiniBand, el servidor sería <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%  

A continuación, se muestra el DDL para la tabla 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);  

A continuación, se muestra un ejemplo del archivo de datos, DimAccount.txt, que contiene datos que se van a cargar en la tabla 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. Carga de datos desde la línea de comandos

El script del ejemplo B se puede reemplazar escribiendo todos los parámetros en la línea de comandos, como se muestra en el ejemplo siguiente.

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>  

Descripción de los parámetros de línea de comandos:

  • C:\Archivos de programa\Microsoft SQL Server Parallel Data Warehouse\100\dwloader.exe es la ubicación de instalación de dwloader.exe.

  • -S va seguido de la dirección IP del nodo de control.

  • -E especifica que las cadenas vacías se cargan como NULL.

  • -M reload especifica que se trunca la tabla de destino antes de insertar los datos de origen.

  • -e UTF16 indica que el archivo de código fuente usa el tipo de codificación de caracteres little endian.

  • -i .\DimAccount.txt especifica que los datos están en un archivo denominado DimAccount.txt que existe en el directorio actual.

  • -T AdventureWorksPDW2012.dbo.DimAccount especifica el nombre en 3 partes de la tabla que recibe los datos.

  • -R DimAccount.bad especifica que las filas que no se pueden cargar se escribirán en un archivo denominado DimAccount.bad.

  • -t "|" indica que los campos del archivo de entrada, DimAccount.txt, se separan con el carácter de canalización.

  • -r \r\n especifica que cada fila de DimAccount.txt termina con un retorno de carro y un carácter de avance de línea.

  • -U <login_name> -P <password> especifica el inicio de sesión y la contraseña del inicio de sesión que tiene permisos para realizar la carga.