ayuda bulk insert
hola, necesito hacer un bulk insert desde un procedimiento almacenado pero sin cargar los datos de un archivo.
gracias
gracias
Yo utilizo BCP
Programa bcp
El programa bcp copia datos entre Microsoft庐 SQL Server聶 y un archivo de datos con el formato especificado por el usuario.
Sintaxis
bcp {[[nombreBaseDatos.][propietario].]{nombreTabla | nombreVista} | "consulta"}
{in | out | queryout | format} archivoDatos
[-m erroresM谩x] [-f archivoFormato] [-e archivoErr]
[-F primeraFila] [-L 煤ltimaFila] [-b tama帽oLote]
[-n] [-c] [-w] [-N] [-6] [-q] [-C p谩ginaC贸digos]
[-t termCampo] [-r termFila]
[-i archivoEntrada] [-o archivoSalida] [-a tama帽oPaquete]
[-S nombreServidor] [-U IdInicioSesi贸n] [-P contrase帽a]
[-T] [-v] [-R] [-k] [-E] [-h "sugerencia [,聟n]"]
Argumentos
nombreBaseDatos
Es el nombre de la base de datos en la que reside la tabla o la vista especificada. Si no se especifica, es la base de datos predeterminada para el usuario.
propietario
Es el nombre del propietario de la tabla o de la vista. El argumento propietario es opcional si el usuario que realiza la copia masiva es propietario de la tabla o de la vista especificada. Si no se especifica el argumento propietario y el usuario que realiza la copia masiva no es propietario de la tabla o de la vista especificada, Microsoft SQL Server devuelve un mensaje de error y se cancela la operaci贸n de copia masiva.
nombreTabla
Es el nombre de la tabla de destino cuando se copian datos en SQL Server (in), y de la tabla de origen cuando se copian datos desde SQL Server (out).
nombreVista
Es el nombre de la vista de destino cuando se copian datos en SQL Server (in), y de la vista de origen cuando se copian datos desde SQL Server (out). S贸lo pueden utilizarse como vistas de destino aquellas vistas en las que todas las columnas hacen referencia a la misma tabla. Para obtener m谩s informaci贸n acerca de las restricciones de la copia de datos en las vistas, consulte INSERT.
consulta
Es una consulta Transact-SQL que devuelve un conjunto de resultados. Si la consulta devuelve varios conjuntos de resultados, como una instrucci贸n SELECT que especifica una cl谩usula COMPUTE, s贸lo se copiar谩 en el archivo de datos el primer conjunto de resultados; los conjuntos de resultados siguientes se omiten. Utilice comillas dobles para la consulta y comillas simples para cualquier elemento incrustado de la consulta. Tambi茅n debe especificarse queryout al realizar copias de datos masivas desde una consulta.
in | out | queryout | format
Especifica la direcci贸n de la copia masiva. Con la opci贸n in se realiza una copia desde un archivo a la tabla o a la vista de la base de datos. Con la opci贸n out se realiza una copia desde la tabla o desde la vista de la base de datos a un archivo. S贸lo se debe especificar queryout al realizar copias de datos masivas desde una consulta. Con la opci贸n format se crea un archivo de formato basado en la opci贸n especificada (-n, -c, -w, -6 o -N) y en los delimitadores de tabla o de la vista. Si se utiliza format, tambi茅n debe especificarse la opci贸n -f.
archivoDatos
Es la ruta de acceso completa del archivo de datos que se utiliza en la copia masiva de una tabla o de una vista desde, o hacia, un disco. Cuando se realiza una copia de datos masiva en SQL Server, el archivo de datos contiene los datos que deben copiarse en la tabla o en la vista especificada. Cuando se realiza una copia de datos masiva desde SQL Server, el archivo de datos contiene los datos copiados desde la tabla o desde la vista. La ruta de acceso puede contener de 1 a 255 caracteres.
-m erroresM谩x
Especifica el n煤mero m谩ximo de errores que pueden producirse antes de que se cancele la operaci贸n de copia masiva. Cada fila que no pueda copiarse con el programa bcp se omite y se considera como un error. Si no se incluye esta opci贸n, el valor predeterminado es 10.
-f archivoFormato
Especifica la ruta de acceso del archivo de formato que contiene respuestas guardadas de una utilizaci贸n previa de bcp con la misma tabla o vista. Utilice esta opci贸n cuando trabaje con un archivo de formato creado con la opci贸n format para hacer una copia de datos masiva de entrada o de salida. La creaci贸n del archivo de formato es opcional. Despu茅s de pedirle que especifique los aspectos relacionados con el formato, bcp le preguntar谩 si desea guardar las respuestas en un archivo de formato. El nombre predeterminado para el archivo es Bcp.fmt. bcp puede consultar un archivo de formato cuando realice copias de datos masivas; por lo tanto, no es necesario volver a escribir respuestas acerca del formato ya existentes de forma interactiva. Si no se utiliza esta opci贸n y no se especifica -n, -c, -w, -6 o -N, bcp le pide informaci贸n acerca del formato.
-e archivoErr
Especifica la ruta completa de un archivo de errores que se utiliza para guardar las filas que bcp no puede transferir del archivo a la base de datos. Los mensajes de error de bcp van a la estaci贸n de trabajo del usuario. Si no se utiliza esta opci贸n, no se crear谩 el archivo de errores.
-F primeraFila
Especifica el n煤mero de la primera columna para la copia masiva. El valor predeterminado es 1, que hace referencia a la primera fila del archivo de datos especificado.
-L 煤ltimaFila
Especifica el n煤mero de la 煤ltima fila para la copia masiva. El valor predeterminado es 0, que hace referencia a la 煤ltima fila del archivo de datos especificado.
-b tama帽oLote
Especifica el n煤mero de filas por lote de datos copiado. Cada lote se copia en el servidor como una transacci贸n. SQL Server confirma o, en caso de error, deshace la transacci贸n para cada lote. De forma predeterminada, todos los datos del archivo de datos especificado se copian en un lote. No utilice esta opci贸n en combinaci贸n con -h "ROWS_PER_BATCH = bb".
-n
Realiza la operaci贸n de copia masiva con los tipos de datos nativos de la base de datos. Esta opci贸n no efect煤a una petici贸n para cada campo, sino que utiliza los valores nativos.
-c
Realiza la operaci贸n de copia masiva con un tipo de datos de car谩cter. Esta opci贸n no realiza una petici贸n para cada campo; utiliza char como tipo de almacenamiento, no necesita prefijos y utiliza t (car谩cter de tabulador) como separador de campos y n (car谩cter de nueva l铆nea) como terminador de la fila.
-w
Realiza la operaci贸n de copia masiva con caracteres Unicode. Esta opci贸n no realiza una petici贸n para cada campo; utiliza nchar como tipo de almacenamiento, no necesita prefijos y utiliza el car谩cter t (car谩cter de tabulador) como separador de campos y n (car谩cter de nueva l铆nea) como terminador de la l铆nea. No puede utilizarse con SQL Server versi贸n 6.5 ni anteriores.
-N
Realiza la operaci贸n de copia masiva con los tipos de datos nativos (de la base de datos) para datos que no sean de caracteres, y con datos Unicode para los datos de caracteres. Esta opci贸n es una alternativa de mayor rendimiento que la opci贸n -w y tiene como objeto la transferencia de datos desde un servidor SQL Server a otro mediante un archivo de datos. No realiza una petici贸n para cada campo. Utilice esta opci贸n cuando vaya a transferir datos que contengan caracteres ANSI extendidos y desee aprovechar el rendimiento del modo nativo. No puede utilizarse -N con SQL Server 6.5 ni anteriores.
-6
Realiza la operaci贸n de copia masiva con tipos de datos de SQL Server 6.0 贸 6.5. Utilice esta opci贸n en combinaci贸n con el formato de car谩cter (-c) o nativo (-n). Esta opci贸n no realiza una petici贸n para cada campo, sino que utiliza los valores predeterminados. Utilice esta opci贸n cuando los archivos de datos contengan valores con los formatos de SQL Server 6.5, tales como archivos de datos generados por el programa bcp incluido con SQL Server versi贸n 6.5 y anteriores. Por ejemplo, para realizar copias masivas en SQL Server de formatos de fecha admitidos por versiones anteriores del programa bcp (pero que ya no admite ODBC), utilice el par谩metro -6.
--------------------------------------------------------------------------------
Importante Cuando realice copias de datos masivas de SQL Server en un archivo de datos, bcp no generar谩 formatos de fecha de SQL Server 6.0 ni 6.5 para ning煤n dato datetime o smalldatetime aunque se especifique -6. Las fechas siempre se escriben en formato ODBC. Adem谩s, los valores NULL se escriben en las columnas bit con el valor 0, porque SQL Server 6.5 y las versiones anteriores no son compatibles con datos bit que acepten valores NULL.
--------------------------------------------------------------------------------
-q
Especifica que son necesarios identificadores entre comillas; por ejemplo, cuando el nombre de la tabla o de la vista contiene caracteres que no son ANSI. Incluya las tres partes del nombre de la tabla o de la vista (que puede contener caracteres especiales incrustados, como espacios) entre comillas dobles (聯 聯).
-C p谩ginaC贸digos
Especifica la p谩gina de c贸digos de los datos del archivo de datos. p谩ginaC贸digos s贸lo es relevante si los datos contienen columnas char, varchar o text con valores de caracteres mayores de 127 o menores de 32.
Valor de p谩gina de c贸digos Descripci贸n
ACP ANSI/Microsoft Windows庐 (ISO 1252).
OEM P谩gina de c贸digos predeterminada, utilizada por el cliente. 脡sta es la p谩gina de c贸digos que utiliza bcp de forma predeterminada si no se especifica -C.
RAW No se realiza ninguna conversi贸n entre p谩ginas de c贸digos. 脡sta es la opci贸n m谩s r谩pida porque no se producen conversiones.
<valor> N煤mero espec铆fico de una p谩gina de c贸digos, por ejemplo, 850.
-t termCampo
Especifica el terminador del campo. El valor predeterminado es t (car谩cter de tabulador). Utilice este par谩metro para suplantar el terminador de campo predeterminado.
-r termFila
Especifica el terminador de la fila. El valor predeterminado es n (car谩cter de nueva l铆nea). Utilice este par谩metro para suplantar el terminador de fila predeterminado.
-i archivoEntrada
Especifica el nombre de un archivo de respuesta, que contiene las respuestas a las preguntas que aparecen junto al s铆mbolo del sistema para cada campo cuando se realiza una copia masiva en modo interactivo (no se especifican -n, -c, -w, -6 o -N).
-o archivoSalida
Especifica el nombre de un archivo que recibe la salida de bcp redirigida desde el s铆mbolo del sistema.
-a tama帽oPaquete
Especifica el n煤mero de bytes por paquete de red enviados y recibidos por el servidor. Puede establecerse una opci贸n de configuraci贸n del servidor con el Administrador corporativo de SQL Server (o con el procedimiento almacenado del sistema sp_configure). No obstante, las opciones de configuraci贸n de servidor pueden suplantarse individualmente mediante esta opci贸n. tama帽oPaquete acepta valores de 4.096 a 65.535 bytes; el valor predeterminado es 4.096.
Un tama帽o mayor de los paquetes puede mejorar el rendimiento de las operaciones de copia masiva. Si se pide un tama帽o de paquete mayor, pero no puede concederse, se utiliza el valor predeterminado. Las estad铆sticas de rendimiento generadas por bcp muestran el tama帽o del paquete utilizado.
-S nombreServidor
Especifica el servidor SQL Server con el que debe establecerse la conexi贸n. nombreServidor es el nombre del servidor en la red. De forma predeterminada, es el servidor local en el que se ejecuta SQL Server (ning煤n nombre de servidor). Esta opci贸n es necesaria cuando se ejecute bcp desde un equipo remoto conectado a la red.
-U IdInicioSesi贸n
Especifica el identificador de inicio de sesi贸n utilizado para conectar con SQL Server.
-P contrase帽a
Especifica la contrase帽a para el identificador de inicio de sesi贸n. Si no se utiliza esta opci贸n, bcp le pide una contrase帽a. Si se utiliza esta opci贸n al final del s铆mbolo del sistema sin especificar ninguna contrase帽a, bcp utiliza la contrase帽a predeterminada (NULL).
-T
Especifica que bcp se conectar谩 a SQL Server con una conexi贸n de confianza, mediante las credenciales de seguridad del usuario de la red. Los par谩metros IdInicioSesi贸n y contrase帽a no son obligatorios.
-v
Facilita informaci贸n acerca del n煤mero de versi贸n del programa bcp y de los derechos de autor.
-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. De forma predeterminada, la configuraci贸n regional se omite.
-k
Especifica que las columnas vac铆as deben conservar un valor NULL durante la operaci贸n de copia masiva, en vez de tener valores predeterminados para las columnas insertadas.
-E
Especifica que los valores de una columna de identidad est谩n presentes en el archivo que se importa. Si no se especifica -E, se omiten los valores de identidad de esta columna en el archivo de datos que se importa y SQL Server asigna autom谩ticamente valores 煤nicos basados en los valores de inicializaci贸n y de incremento especificados durante la creaci贸n de la tabla. Si el archivo de datos no contiene valores para la columna de identidad de la tabla o de la vista, utilice un archivo de formato para especificar que se debe omitir la columna de identidad de la tabla o de la vista al importar los datos; SQL Server asignar谩 autom谩ticamente valores exclusivos para la columna. Para obtener m谩s informaci贸n, consulte DBCC CHECKIDENT.
-h "sugerencia [,聟n]"
Especifica las sugerencias que deben utilizarse durante una copia de datos masiva en una tabla o en una vista. No se puede utilizar esta opci贸n cuando se realicen copias de datos masivas en SQL Server 6.x ni en versiones anteriores.
Sugerencia Descripci贸n
ORDER (columna [ASC | DESC] [,聟n]) Orden de los datos en el archivo de datos. El rendimiento de la copia masiva mejora si los datos cargados se ordenan seg煤n el 铆ndice agrupado de la tabla. Si el archivo de datos se almacena en un orden distinto, o si no hay 铆ndice agrupado en la tabla, se pasar谩 por alto la sugerencia ORDER. Los nombres de columna facilitados deben ser columnas v谩lidas en la tabla de destino. De forma predeterminada, bcp supone que el archivo de datos no est谩 ordenado.
ROWS_PER_BATCH = bb N煤mero de filas de datos por lote (igual a bb). Se utiliza cuando no se especifica -b, con lo que se env铆a el archivo de datos completo al servidor en una sola transacci贸n. El servidor optimiza la carga de la copia masiva seg煤n el valor bb. De forma predeterminada, el valor de ROWS_PER_BATCH es desconocido.
KILOBYTES_PER_BATCH = cc N煤mero aproximado de kilobytes (KB) de datos por lote (igual a cc). De forma predeterminada, el valor de KILOBYTES_PER_BATCH es desconocido.
TABLOCK Se obtiene un bloqueo en la tabla durante la operaci贸n de copia masiva. Esta sugerencia mejora notablemente el rendimiento, dado que, al mantenerse el bloqueo 煤nicamente durante la operaci贸n de copia masiva, se reduce la contenci贸n en la tabla por bloqueo. Una tabla puede ser cargada simult谩neamente por varios clientes si no tiene 铆ndices y se especifica TABLOCK. De forma predeterminada, el comportamiento del bloqueo viene determinado por la opci贸n de tabla table lock on bulk load.
CHECK_CONSTRAINTS Durante la operaci贸n de copia masiva, se comprueba la existencia de restricciones en la tabla de destino. De forma predeterminada, las restricciones se pasan por alto.
Observaciones
Se omiten los valores del archivo de datos que se importa para las columnas calculadas o timestamp, y SQL Server asigna valores autom谩ticamente. Si el archivo de datos no contiene valores para las columnas calculadas o timestamp de la tabla, utilice un archivo de formato para especificar que se deben pasar por alto las columnas calculadas o timestamp de la tabla al importar los datos; SQL Server asigna autom谩ticamente valores para la columna.
Se realiza una copia masiva de las columnas calculadas y timestamp desde SQL a un archivo de datos en la forma habitual.
Los identificadores de SQL Server (nombres de bases de datos, nombres de tablas o de vistas, contrase帽as y nombres de inicio de sesi贸n) pueden incluir caracteres tales como comillas y espacios incrustados. Cuando especifique en el s铆mbolo del sistema un identificador que incluya un espacio o comillas, coloque el identificador entre dobles comillas (聯 聯). Para los nombres de tablas o de vistas que contengan comillas o espacios incrustados, especifique tambi茅n el par谩metro -q. Por ejemplo, para realizar una copia masiva del archivo Authors.txt en la tabla my table de la base de datos pubs copy, con el nombre de inicio de sesi贸n my name y la contrase帽a my pass, ejecute:
bcp "pubs copy..my table" in authors.txt -c -q -Sserver_name -U"my name" -P"my pass"
Atte
----------------------------------------------
[email protected]
M茅xico
Gabriel Sanchez
