MTBASE / SYBASE DE COLOMBIA
 
Búsqueda avanzada...
Versión para imprimir Versión para imprimir Enviar vínculo por e-mail Enviar por e-mail Ver atributos del documento Atributos del documento
 

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
 
 Inicio   Sobre MTBASE   Sobre Sybase   Empleos en MTBASE   Mapa del Sitio   Aspectos Legales y Políticas de Privacidad