Conexión con bcp
La utilidad bcp está disponible en Microsoft ODBC Driver for SQL Server en Linux y macOS. En esta página se documentan las diferencias de la versión de Windows de bcp.
El terminador de campo es una tabulación ("\t").
El terminador de línea es una nueva línea ("\n").
El modo de carácter es el formato preferido de los archivos de formato
bcp
y de datos que no contienen caracteres extendidos.
Nota
Las barras diagonales inversas "\" de los argumentos de línea de comandos deben entrecomillarse o contener caracteres de escape. Por ejemplo, para especificar una nueva línea como terminador de fila personalizado debe utilizar uno de los siguientes mecanismos:
- -r\\n
- -r"\n"
- -r'\n'
A continuación, se muestra una invocación de ejemplo de un comando de bcp
para copiar filas de la tabla en un archivo de texto:
bcp AdventureWorks2008R2.Person.Address out test.dat -Usa -Pxxxx -Sxxx.xxx.xxx.xxx
Opciones disponibles
En la versión actual, se encuentran disponibles las siguientes opciones y sintaxis:
[database.]schema.table in data_file | out data_file
-a packet_size
Especifica el número de bytes por paquete de red enviados y recibidos por el servidor.
-b batch_size
Especifica el número de filas por lote de datos importados.
-c
Utiliza un tipo de datos de caracteres.
-d database_name
Especifica la base de datos a la que conectarse.
-D
Hace que el valor transmitido a la opción bcp
-S se interprete como un nombre de origen de datos (DSN). Para obtener más información, vea la sección "Compatibilidad con DSN en sqlcmd y bcp" de Connecting with sqlcmd.
-e error_file
Especifica la ruta completa de un archivo de error que se usa para almacenar las filas que la utilidad bcp
no puede transferir del archivo a la base de datos.
-E
Utiliza el valor o los valores de identidad del archivo de datos importado en la columna de identidad.
-f format_file
Especifica la ruta de acceso completa de un archivo de formato.
-F first_row
Especifica el número de la primera fila que se exportará desde una tabla o que se importará desde un archivo de datos.
-G
El cliente usa este modificador al conectarse a la base de datos de Azure SQL, Azure SQL Managed Instance o Azure Synapse Analytics para especificar que el usuario se autentica con Microsoft Entra ID (anteriormente llamado Azure Active Directory). Se puede combinar con la opción -P para usar la autenticación de token de acceso (versión 17.8 o posteriores). El modificador -G requiere al menos sqlcmd versión 17.6. Para determinar su versión, ejecute bcp -v.
Importante
La opción -G
solo es válida para la base de datos de Azure SQL, Azure SQL Managed Instance y Azure Synapse Analytics.
La autenticación interactiva de Microsoft Entra no se admite actualmente ni en Linux ni en macOS. La autenticación integrada de Microsoft Entra requiere la versión 17.6.1 o superior de Microsoft ODBC Driver 17 para SQL Server y un entorno de Kerberos configurado correctamente.
-k
Especifica que las columnas vacías deben mantener un valor NULL durante la operación, en lugar de tener valores predeterminados para las columnas insertadas.
-l
Especifica un tiempo de espera de inicio de sesión. La opción -l especifica el número de segundos que tienen que transcurrir antes de que un inicio de sesión de SQL Server agote el tiempo de espera cuando se trate de conectar a un servidor. El tiempo de espera de inicio de sesión predeterminado es de 15 segundos. El período de tiempo de espera de inicio de sesión debe ser un número comprendido entre 0 y 65534. Si el valor proporcionado no es numérico o no está dentro de ese rango, bcp
genera un mensaje de error. Un valor de 0 especifica un tiempo de espera infinito.
-L last_row
Especifica el número de la última fila que se exportará desde una tabla o que se importará desde un archivo de datos.
-m max_errors
Especifica el número máximo de errores de sintaxis que pueden producirse antes de que se cancele la operación bcp
.
-n
Utiliza los tipos de datos nativos (de la base de datos) de los datos para realizar la operación de copia masiva.
-P password
Especifica la contraseña para el identificador de inicio de sesión. Cuando se usa con la opción -G sin -U, se especifica un archivo que contiene un token de acceso (versión 17.8 o posteriores). El archivo de token debe estar en formato UTF-16LE (sin BOM).
Los tokens de acceso se pueden obtener a través de varios métodos. Es importante asegurarse de que el token de acceso es correcto byte a byte, ya que se enviará tal y como está. A continuación se muestra un comando de ejemplo que obtiene un token de acceso. El comando usa los comandos de la CLI de Azure y Linux, y los guarda en un archivo con el formato adecuado. Si la codificación predeterminada del sistema o terminal no es ASCII o UTF-8, es posible que tenga que ajustar las opciones iconv
. Asegúrese de proteger cuidadosamente el archivo resultante y eliminarlo cuando ya no sea necesario.
az account get-access-token --resource https://database.windows.net --output tsv | cut -f 1 | tr -d '\n' | iconv -f ascii -t UTF-16LE > /tmp/tokenFile
-q
Ejecuta la instrucción SET QUOTED_IDENTIFIER ON en la conexión entre la utilidad bcp
y una instancia de SQL Server.
-r row_terminator
Especifica el terminador de la fila.
-R
Especifica que se realice la copia masiva de datos de moneda, fecha y hora en SQL Server con el formato regional definido para la configuración regional del equipo cliente.
-S server
Especifica el nombre de la instancia de SQL Server a la que se va a conectar o, si se utiliza -D, un DSN.
-t field_terminator
Especifica el terminador del campo.
-T
Especifica que la utilidad bcp
se conecte a SQL Server con una conexión de confianza (seguridad integrada).
-u
Confía en el certificado de servidor. (disponible desde bcp
versión 18)
-U login_id
Especifica el identificador de inicio de sesión para conectar con SQL Server.
-v
Facilita información acerca del número de versión y de los derechos de autor de la utilidad bcp
.
-w
Utiliza caracteres Unicode para realizar la operación de copia masiva.
En esta versión, se admiten los caracteres Latin-1 y UTF-16.
-Y[s|m|o]
Especifica el modo de cifrado de la conexión. Las opciones son Strict, Mandatory y Optional (Estricto, Obligatorio y Opcional). El uso de -Y sin parámetros usa el modo de cifrado Mandatory (Obligatorio) y es equivalente a -Ym. (disponible desde bcp
versión 18)
Opciones no disponibles
En la versión actual, se encuentran disponibles las siguientes opciones y sintaxis:
-C
Especifica la página de códigos de los datos incluidos en el archivo de datos.
-h hint
Especifica las sugerencias que deben usarse durante una importación de datos masiva en una tabla o vista.
-i input_file
Especifica el nombre de un archivo de respuesta.
-N
Utiliza los tipos de datos nativos (de la base de datos) para datos que no sean de caracteres, así como datos Unicode para los datos de caracteres.
-o output_file
Especifica el nombre de un archivo que recibe la salida redirigida desde el símbolo del sistema.
-V (80 | 90 | 100)
Utiliza los tipos de datos de una versión anterior de SQL Server.
-x
Si se usa con las opciones format y -f format_file, genera un archivo de formato basado en XML en lugar del archivo de formato predeterminado que no es XML.