Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

Actualización masiva

Estas en el tema de Actualización masiva en el foro de SQL Server en Foros del Web. Hola a todos, espero expresar de la mejor manera la idea.. Tengo una base de datos con 200 tablas mas o menos, cada tabla tiene ...
  #1 (permalink)  
Antiguo 11/10/2013, 15:49
 
Fecha de Ingreso: abril-2008
Ubicación: El Salvador
Mensajes: 736
Antigüedad: 16 años
Puntos: 47
Pregunta Actualización masiva

Hola a todos, espero expresar de la mejor manera la idea..

Tengo una base de datos con 200 tablas mas o menos, cada tabla tiene N campos y quisiera hacer un SP que barra todas las tablas registro por registro de forma automática esto con el objetivo de borrar los espacios en blanco innecesarios al inicio y al final de los campos de texto, ya que actualmente la base pesa cerca de 250GB y he llegado a la conclusión que es por los espacios en blanco que tienen muchos de los registros, existe alguna forma de hacer un update de forma automática sin tener que hacer un update por cada tabla???
lo que tengo hasta ahorita es esto

Código SQL:
Ver original
  1. DECLARE @TABLA VARCHAR (100), @COLUMNA VARCHAR(100)
  2.  
  3. DECLARE CUR_TABLAS CURSOR FOR
  4. SELECT SO.NAME AS TABLA FROM sys.objects SO WHERE SO.TYPE = 'U' ORDER BY SO.NAME
  5. OPEN CUR_TABLAS
  6.  
  7. FETCH NEXT FROM CUR_TABLAS INTO @TABLA
  8.  
  9. WHILE @@FETCH_STATUS = 0                                                                                                                        
  10. BEGIN
  11.  
  12. FETCH NEXT FROM CUR_TABLAS INTO @TABLA
  13. END--FIN DE CURSOR DE TABLAS
  14. CLOSE CUR_TABLAS
  15. DEALLOCATE CUR_TABLAS

con lo que logro barrer todas las tablas de la base, pero no encuentro como ir tabla por tabla barriendo registro por registo y hacer el correspondiente update de cada campo.....

¿Será posible hacer lo que quiero?
o ¿sin duda debo ir tabla por tabla haciendo el update manualmente?

Gracias y espero sus comentarios
  #2 (permalink)  
Antiguo 11/10/2013, 16:40
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 9 meses
Puntos: 180
Respuesta: Actualización masiva

No se entiende, ¿Qué tipo de dato son tus campos?, ¿Cómo deduces que tienes blancos?
__________________
MCTS Isaias Islas
  #3 (permalink)  
Antiguo 11/10/2013, 20:29
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Actualización masiva

Cita:
Iniciado por alex1084 Ver Mensaje
Hola a todos, espero expresar de la mejor manera la idea..

Tengo una base de datos con 200 tablas mas o menos, cada tabla tiene N campos y quisiera hacer un SP que barra todas las tablas registro por registro de forma automática esto con el objetivo de borrar los espacios en blanco innecesarios al inicio y al final de los campos de texto, ya que actualmente la base pesa cerca de 250GB y he llegado a la conclusión que es por los espacios en blanco que tienen muchos de los registros, existe alguna forma de hacer un update de forma automática sin tener que hacer un update por cada tabla???
lo que tengo hasta ahorita es esto

Código SQL:
Ver original
  1. DECLARE @TABLA VARCHAR (100), @COLUMNA VARCHAR(100)
  2.  
  3. DECLARE CUR_TABLAS CURSOR FOR
  4. SELECT SO.NAME AS TABLA FROM sys.objects SO WHERE SO.TYPE = 'U' ORDER BY SO.NAME
  5. OPEN CUR_TABLAS
  6.  
  7. FETCH NEXT FROM CUR_TABLAS INTO @TABLA
  8.  
  9. WHILE @@FETCH_STATUS = 0                                                                                                                        
  10. BEGIN
  11.  
  12. FETCH NEXT FROM CUR_TABLAS INTO @TABLA
  13. END--FIN DE CURSOR DE TABLAS
  14. CLOSE CUR_TABLAS
  15. DEALLOCATE CUR_TABLAS

con lo que logro barrer todas las tablas de la base, pero no encuentro como ir tabla por tabla barriendo registro por registo y hacer el correspondiente update de cada campo.....

¿Será posible hacer lo que quiero?
o ¿sin duda debo ir tabla por tabla haciendo el update manualmente?

Gracias y espero sus comentarios
Disculpame amigo pero no estoy de acuerdo contigo de que tu problema sean "los espacios en blanco" porque digo esto, porque cuando defines un campo defines su longitud(hablando de los de tipo texto) y sql server te reserva ese espacio de memoria, ahora si tu base de datos esta muy grande lo que puedes hacer es un shrink de la misma, un shrink del log, revisar los indices(una reorganizacion de los mismos) eliminacion de informacion no necesaria, revisar el crecimiento de la base de datos etc.

saludos!
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #4 (permalink)  
Antiguo 24/10/2013, 10:29
 
Fecha de Ingreso: abril-2008
Ubicación: El Salvador
Mensajes: 736
Antigüedad: 16 años
Puntos: 47
Respuesta: Actualización masiva

Cita:
Iniciado por Libras Ver Mensaje
Disculpame amigo pero no estoy de acuerdo contigo de que tu problema sean "los espacios en blanco" porque digo esto, porque cuando defines un campo defines su longitud(hablando de los de tipo texto) y sql server te reserva ese espacio de memoria, ahora si tu base de datos esta muy grande lo que puedes hacer es un shrink de la misma, un shrink del log, revisar los indices(una reorganizacion de los mismos) eliminacion de informacion no necesaria, revisar el crecimiento de la base de datos etc.

saludos!
hola gracias por responderme

Ya hice un shrink del log y del mdf y eso no me hizo mayor cosa hablando de reducción del tamaño de los archivos siempre siguien siendo muy grandes.

Esta base de datos la lleno de una base de AS400
  #5 (permalink)  
Antiguo 24/10/2013, 10:37
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Actualización masiva

a ver...el tamaño de los archivos y el tamaño de la base de datos son 2 cosas distintas, que uno de tus archivos este muy grande no quiere decir que al momento de insertarse en la base de datos quedara del mismo tamaño, si tienes archivos muy grandes porque no pruebas en tener muchos archivos pequeños aplicando el divide y venceras....
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me

Etiquetas: masiva, registro, select, tabla
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 14:39.