Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Firebird e Interbase (https://www.clubdelphi.com/foros/forumdisplay.php?f=19)
-   -   Actualizar una tablas desde un archivo de texto. (https://www.clubdelphi.com/foros/showthread.php?t=93331)

rg5820 05-08-2018 05:44:32

Actualizar una tablas desde un archivo de texto.
 
Hola a todos.!
Tengo que resolver un problema

Tabla : Items
Código:

  ID      CODIGO 
-------  -------------
162600    1010P
162700    1021P
162800    103AP
163200    205DP

Tabla : Articulos
Código:

FK_ITEMS  CODIGO_SEGUNDO 
--------  ---------------------------
162600              00000
162700              00000
162800              00000
163200              00000

Necesito actualizar el campo CODIGO_SEGUNDO de la Tabla Articulos

La información para actualizar esta contenida en un archivo de texto.
En este archivo tengo una linea de texto que tiene en las primeras posiciones el CODIGO de la Tabla Items y seguidamente el contenido que tengo que actualizar en el campo CODIGO_SEGUNDO

Por ejemplo en el archivo Novedades.txt tengo la siguiente informacion:
Código:

  1010P    0808B
  1015P    0808B
  1018P    0808B
  1021P    0808A
  205DP    0805C

Es decir en el caso del primer registro, para el codigo 1010P usando el campo ID de la tabla Items (162600) debo acceder a la tabla Articulos y actualizar el campo CODIGO_SEGUNDO con el valor 0808B

Si la cantidad de registros para actualizar fueran pocos seguramente una instruccion del tipo:
Código SQL [-]
update ARTICULOS
set CODIGO_SEGUNDO = '0808B'
where (select CODIGO from ITEMS where ARTICULOS.FK_ITEMS = ITEMS.ID) in  ('1010P', '1015P', '1018P')
Pero al ser una gran cantidad de registros es algo impractico copiar toda esa informacion en una o varias instruciones.
No tengo posibilidades de modificar la estructura de la base para crear una tabla que tenga la estructura del archivo Novedades.txt para luego intentar importar los datos y actualizar la tabla articulos.

¿hay alguna forma de leer secuencialmente este archivo de texto mientras actualizo la base articulos?

Cualquier sugerencia o ayuda sera bien recibida.
Muchas Gracias.

Alex Mireles 07-08-2018 03:10:22

MI Sugerencia.....

Puedes usar EXCEL, es decir,,,, pones los valores de tus n-tablas en n-hojas de Excel y después en una hoja de Excel vacía y mediante líneas de texto que hagan referencia a los campos de cada registro de cada tabla, haces la CONCATENACION de las instrucciones de UPDATE con los valores de los campos que necesitas.

Al final tendrás un SCRIPT que se genera CASI automáticamente por cada registro y ese lo ejecutas en tu sesión del RDMS(Manejador de Base de Datos).


Nota: Revisa y Usa la función de Excel @concatenar ,, ahí te darás lucidez de mi propuesta.

SALUDOS:

bucanero 07-08-2018 10:38:33

Hola a todos

si lo que tienes es un fichero de datos tipo CSV o separados por cualquier otro carácter, en MySQL existe un comando que los lee automáticamente y los puedes cargar en una tabla de estructura similar a los propios campos contenidos en el CSV, pudiendo ya trabajar con comandos SQL normales.

Comando MySQL:
Código SQL [-]
LOAD DATA INFILE 'data.txt' INTO TABLE db2.my_table;

Yo no trabajo con FIREBIRD, pero buscando en google vi que este motor de BBDD también tiene un comando similar

Comando FIREBIRD:
Código SQL [-]
CREATE TABLE TABEXPORTA
EXTERNAL FILE 'C:\EXPORTAR\ARQUIVO.TXT' (CODIGO char(12),  NOME char(20),  DATA char(11), SALARIO char(20),QUEBRA char(2) )
información obtenida desde https://groups.google.com/forum/#!to...ro/qMfrEzxpuMg

Y una vez cargados los datos en una tabla, que incluso puede ser temporal, solo seria necesario realizar el típico UPDATE

Casimiro Notevi 07-08-2018 11:18:30

En este caso, con firebird, igualmente se puede leer un archivo de texto como una tabla temporal, trabajar con ella y hacer lo que necesites.


La franja horaria es GMT +2. Ahora son las 03:59:34.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi