Mejoras al BCP en Adaptive Server Enterprise 15.0.2

Introducción
BCP es la herramienta de Sybase que permite subir datos de un archivo plano a una tabla de la base de datos (BCP-in), o bajar datos de una tabla a un archivo plano (BCP-out). El BCP-in puede trabajar en dos velocidades: el BCP-in “rápido” (o “fast” BCP-in) y el BCP-in “lento”.
BCP-in “Rápido” para Tablas con Índices
Históricamente el BCP-in “rápido” sólo trabajaba sobre tablas no indexadas; a partir de la versión 15.0.2 de Adaptive Server Enterprise (ASE), también se permite sobre tablas indexadas, con algunas restricciones:
- Sólo trabaja cuando no existen índices tipo “clustered” (en tablas APL)—si lo hay, se usa el BCP-in “lento”. Para tablas DOL, el BCP-in “rápido” puede ser usado con índices “clustered”.
- Sólo trabaja cuando no existen índices “nonclustered” únicos—si los hay, se usa el BCP-in “lento”.
- Sólo trabaja cuando la tabla no está marcada para replicación—si lo está, se usa el BCP-in “lento”.
Sin embargo, algunas cosas no han cambiado para el BCP-in “rápido”:
- Internamente sólo registran en el log de transacciones las asignaciones de espacio—en consecuencia es más rápido que el BCP-in “lento”, el cual registra cada fila procesada.
- Sólo se permite cuando la opción “select into/bulkcopy” está activa—esto se hace mediante el procedimiento del sistema sp_dboption.
- Después de realizar un BCP-in “rápido”, no se puede ejecutar un dump tran—se debe ejecutar un dump database.
Otros puntos importante:
- El BCP-in “rápido” sobre tablas indexadas funciona con versiones anteriores del utilitario BCP—todos los cambios de funcionalidad se hicieron a nivel de ASE.
- También trabaja sobre tablas con triggers—los triggers NO se disparan como resultado del BCP-in (nunca lo han hecho).
El Parámetro --initstring de BCP
El nuevo parámetro --initstring (note el doble guión) permite especificar un comando T-SQL para ser ejecutado antes de que comience el BCP-in. BCP usa la misma sesión, así que no hay una conexión adicional a ASE.
Inicialmente se pensó para ambientes de replicación; por ejemplo:
| bcp base_de_datos..mi_tabla in mi_archivo.txt -Uaperez -Psecreto -SSYBASE -c --initstring "set replication off" |
Si la tabla mi_tabla está marcada para replicación, las filas insertadas no son replicadas.
Sin embargo, el parámetro --initstring puede tener otras aplicaciones:
bcp ... --initstring "truncate table base_de_datos..mi_tabla" -- truncar la tabla antes del BCP-in bcp ... --initstring "delete base_de_datos..mi_tabla where col1=0" -- eliminar algunas filas de la tabla antes del BCP-in |
Tenga en cuenta que:
- No hay verificación de errores.
- No se arrojan resultados.
- No hay salida.
Ésta opción hace parte del Open Client/Server 15.0 ESD #5 (incluido con ASE 15.0.2)—el cambio está en el binario del utilitario BCP, así que funciona con versiones de ASE anteriores a la 15.0.2
Atributos del Documento
|
| Resumen: |
Este documento describe mejoras al BCP en Adaptive Server Enterprise 15.0.2. Estas mejoras incluyen BCP rápido para tablas indexadas y el nuevo parámetro --initstring. |
| Código: |
10231 |
Última Modificación: |
Jul 13, 2009 |
| Temas: |
General |
Tipo de Documento: |
Documento Técnico |
| Productos: |
Adaptive Server Enterprise |
Versión: |
15.0.2 en adelante |
| Plataformas: |
Todas las plataformas |
Sistema Operativo: |
Todos los Sistemas Operativos |
|