Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Se aplica a:SQL Server en Linux
En este artículo se muestra cómo usar la utilidad bcp para realizar una copia masiva de datos entre una instancia de SQL Server en Linux y un archivo de datos en un formato especificado por el usuario.
Puede usar bcp para importar un gran número de filas en tablas SQL Server o exportar datos de tablas de SQL Server a archivos de datos. Excepto cuando se usa con la opción queryout, bcp no requiere conocimiento de Transact-SQL. La bcp utilidad de línea de comandos funciona con SQL Server ejecutándose en las instalaciones o en la nube en Linux, Windows o Docker, y con Azure SQL Database y Azure Synapse Analytics.
En este artículo aprenderá a:
- Importación de datos en una tabla mediante el comando
bcp in - Exportación de datos de una tabla mediante el comando
bcp out
Instalación de las herramientas de línea de comandos de SQL Server
bcp forma parte de las herramientas de línea de comandos de SQL Server, que no se instalan automáticamente con SQL Server en Linux. Si aún no ha instalado las herramientas de línea de comandos de SQL Server en el equipo Linux, debe instalarlas. Para obtener más información sobre cómo instalar las herramientas, seleccione la distribución de Linux en la siguiente lista:
Importación de datos con bcp
En este tutorial, creará una base de datos de ejemplo y una tabla en la instancia de SQL Server local (localhost) y, a continuación, usará bcp para cargar en la tabla de ejemplo desde un archivo de texto en el disco.
Creación de una base de datos y una tabla de ejemplo
Empiece por crear una base de datos de ejemplo con una tabla sencilla que se usa en el resto de este tutorial.
En su sistema Linux, abra la terminal de comandos.
Copie y pegue los siguientes comandos en la ventana del terminal. Estos comandos utilizan la utilidad sqlcmd para crear una base de datos de ejemplo (
BcpSampleDB) y una tabla (TestEmployees) en la instancia local de SQL Server (localhost). Recuerda reemplazarsay<password>cuando sea necesario antes de ejecutar los comandos.
La contraseña debe seguir la directiva de contraseña predeterminada de SQL Server. De forma predeterminada, la contraseña debe tener al menos ocho caracteres y contener caracteres de tres de los siguientes cuatro conjuntos: mayúsculas, minúsculas, dígitos en base 10 y símbolos. Las contraseñas pueden tener hasta 128 caracteres. Use contraseñas lo más largas y complejas posible.
Cree la base de datos BcpSampleDB:
sqlcmd -S localhost -U sa -P <password> -Q "CREATE DATABASE BcpSampleDB;"
Cree la tabla TestEmployees en la base de datos BcpSampleDB:
sqlcmd -S localhost -U sa -P <password> -d BcpSampleDB -Q "CREATE TABLE TestEmployees (Id INT IDENTITY(1,1) NOT NULL PRIMARY KEY, Name NVARCHAR(50), Location NVARCHAR(50));"
Creación del archivo de datos de origen
Copie y pegue el siguiente comando en la ventana del terminal. El comando incorporado cat crea un archivo de datos de texto de ejemplo con tres registros y guarda el archivo en tu directorio personal como ~/test_data.txt. Los campos de los registros se delimitan mediante una coma.
cat > ~/test_data.txt << EOF
1,Jared,Australia
2,Nikita,India
3,Tom,Germany
EOF
Para comprobar que el archivo de datos se ha creado correctamente, ejecute el siguiente comando en la ventana del terminal:
cat ~/test_data.txt
Esto debería mostrar lo siguiente en la ventana del terminal:
1,Jared,Australia
2,Nikita,India
3,Tom,Germany
Importación de datos desde el archivo de datos de origen
Copia y pega el siguiente comando en la ventana del terminal. Este comando usa bcp para conectarse a la instancia de SQL Server local (localhost) e importar los datos del archivo de datos (~/test_data.txt) en la tabla (TestEmployees) de la base de datos (BcpSampleDB). Recuerda reemplazar sa y <password> cuando sea necesario antes de ejecutar el comando.
bcp TestEmployees in ~/test_data.txt -S localhost -U sa -P <password> -d BcpSampleDB -c -t ','
Esta es una breve introducción a los parámetros de la línea de comandos que usamos en bcp este ejemplo:
-
-S: especifica la instancia de SQL Server a la que hay que conectarse. -
-U: especifica el identificador de inicio de sesión para conectar con SQL Server. -
-P: especifica la contraseña del identificador de inicio de sesión. -
-d: especifica la base de datos a la que conectarse. -
-c: realiza operaciones con un tipo de datos de caracteres. -
-t: especifica el terminador de campo. Este ejemplo utiliza una coma como terminador de campo para los registros en el archivo de datos
Note
En este ejemplo no se especifica un terminador de fila personalizado. Las filas del archivo de datos de texto se han finalizado correctamente con newline al usar antes el comando cat para crear el archivo de datos.
Para comprobar que los datos se han importado correctamente, ejecute el siguiente comando en la ventana del terminal. Recuerda reemplazar sa y <password> cuando sea necesario antes de ejecutar el comando.
sqlcmd -S localhost -d BcpSampleDB -U sa -P <password> -I -Q "SELECT * FROM TestEmployees;"
Esto debería mostrar los siguientes resultados:
Id Name Location
----------- ------------------- -------------------
1 Jared Australia
2 Nikita India
3 Tom Germany
Exportación de datos con bcp
En este tutorial, usará bcp para exportar datos de la tabla de ejemplo que creamos anteriormente a un nuevo archivo de datos.
Copia y pega el siguiente comando en la ventana del terminal. Este comando utiliza la bcp utilidad de línea de comandos para exportar datos de la tabla TestEmployees en la base de datos BcpSampleDB a un nuevo archivo de datos llamado ~/test_export.txt. Recuerda reemplazar sa y <password> cuando sea necesario antes de ejecutar el comando.
bcp TestEmployees out ~/test_export.txt -S localhost -U sa -P <password> -d BcpSampleDB -c -t ','
Para comprobar que los datos se han exportado correctamente, ejecute el siguiente comando en la ventana del terminal:
cat ~/test_export.txt
Esto debería mostrar lo siguiente en la ventana del terminal:
1,Jared,Australia
2,Nikita,India
3,Tom,Germany