Copia una tabla de una base de datos a / desde un fichero en un formato especificado por el usuario.
Sintaxis :
bcp [[database_name.]owner.]table_name {in | out} datafile [/m
maxerrors] [/f formatfile] [/e errfile] [/F firstrow] [/L lastrow] [/b
batchsize] [/n] [/c] [/E][/t field_term] [/r row_term] [/i inputfile]
[/o outputfile] /U login_id [/P password] [/S servername] [/v] [/a
packet_size]
donde
database_name
Especifica la base de datos. Si la tabla copiada está en tu base de datos por defecto, este parámetro es opcional.
owner
Nombre del propietario. Este nombre es opcional si eres el propietario de la tabla copiada. Este parámetro es opcional. Si no se especifica propietario y tú no eres el propietario de la tabla el programa no se ejecuta.
table_name
Especifica el nombre de la tabla a copiar.
in | out
Indica la dirección de la copia. La opción in copia del fichero a la base de datos; la opción out copia de la base de datos al fichero.
datafile
Es el nombre completo (con path) del fichero cuando se copia la tabla a / desde un fichero en el disco duro o un único disquete. Puede tener desde 1 hasta 255 caracteres. Cuando se copia una tabla a / desde múltiples disquetes este parámetro contendrá sólo el nombre de la unidad (por ejemplo A:).
/m maxerrors
Es el máximo número de errores que pueden ocurrir antes de cancelar la copia. Cada fila que no puede ser copiada por bcp es ignorada y contada como un error. Si no se incluye esta opción, el valor por defecto es 10.
/f formatfile
Es el nombre completo de un fichero que contiene las respuestas de un uso previo de bcp en esta misma tabla; la creación del fichero de formato es opcional. Usa esta opción si ya tienes creado un fichero de formato que quieres usar. Después de que contestes las preguntas de formato, bcp te pregunta si quieres guardar las respuestas en un fichero de formato. El nombre por defecto es BCP.FMT. Si no se emplea esta opción, bcp te preguntará la información sobre el formato.
/e errfile
Es el nombre completo del fichero de errores donde bcp guardará las filas que no pueda transferir del fichero a la base de datos. Los mensajes de error del bcp irán a la estación de trabajo del usuario. Si no se emplea esta opción no se creará el fichero de errores.
/F firstrow
Especifica el número de la primera fila a copiar (por defecto será la primera fila).
/L lastrow
Especifica el número de la última fila a copia (por defecto será la última fila).
/b batchsize
Especifica el número de filas a copiar por cada lote (por defecto copia todas las filas en un lote).
/n
Efectúa la operación de copia empleando los tipos de datos de la base de datos como por defecto. Esta opción no pregunta por cada campo; usa los valores por defecto.
/c
Efectúa la operación de copia con el tipo de datos carácter como valor por defecto. Esta opción no pregunta por cada campo; usa el carácter como tipo de almacenamiento por defecto, sin prefijos, \t (tab) como separador de campos y \n (new line) como separador de filas.
/E
Es empleado cuando hay valores identity (contador) en la tabla a importar.
Cuando se importan datos, se le asigna temporalmente un valor 0 a una columna identity. Mientras se insertan filas en la tabla, SQL Server asigna valores únicos teniendo en cuenta los incrementos especificados durante la creación de la tabla. Use la opción /E cuando los valores identity ya estén en el fichero.
Si prefieres los valores identity generados por SQL Server no coloques las columnas con valores identity en el fichero.
/t field_term
Separador de campos por defecto.
/r row_term
Separador de filas por defecto.
/i inputfile
Nombre del fichero que redirige la entrada a bcp.
/o outputfile
Nombre del fichero que recibe la salida redirigida de bcp.
/U login_id
Identificador de usuario.
/P password
Password del usuario. Si no se emplea esta opción, bcp preguntará la password. Si se emplea esta opción al final de la línea de comandos sin poner ninguna password, bcp emplea la password por defecto (NULL).
/S servername
Especifica el SQL Server al que queremos conectarnos. El servername es el nombre del servidor en la red. Esta opicón es necesaria si estás ejecutando bcp desde un ordenador de la red.
/v
Devuelve la versión de la DB-Library.
/a packet_size
Es el número de bytes, por cada paquete de red, enviado a y desde el servidor.
Esta opción de configuración del servidor se puede establecer usando SQL Enterprise Manager (o el procedimiento almacenado sp_configure system). De todas formas, esta opción puede modificarse para una tarnsferencia en concreto con el parámetro /a del bcp. Los valores válidos para packet_size van desde 512 hasta 65535. El valor por defecto para el servidor es 4096; el valor por defecto para la versión de NT del bcp es 4096; el valor por defecto para MS-DOS es 512.
Incrementar el tamaño del paquete puede mejorar el rendimiento de grandes operaciones de copia. Las pruebas de Microsoft indican que de 4096 a 8192 son normalmente los valores mejores para grandes operaciones de copia. Si se pide un paquete mayor pero no puede ser garantizado, el cliente asumirá por defecto 512. Las estadísticas de rendimiento que se generan al final de la ejecución del bcp muestran el tamaño de paquete empleado.
-----Original Message-----
From: Carlos Chaine
Sent: Monday, October 05, 1998 8:36 AM
To: vb-esp@ccc.uba.ar
Subject: (VB-ESP) Importar datos a SQL Server
Alguno conoce una forma rapida de importar datos desde un
archivo de
texto a SQL Server.
Con el INSERT SQL, resulta demasiado lento para una tabla de
1.200.000
registros.
Cada linea del archivo es un registro. Uso la funcion Mid para
separar
los campos.
Acepto cualquier consejo. Gracias.
Chaine Carlos Daniel.