Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Recomendación Exportando datos de una DB (https://www.clubdelphi.com/foros/showthread.php?t=55993)

MaMu 04-05-2008 08:13:00

Recomendación Exportando datos de una DB
 
Yo tengo una DB, con unas 30 tablas, de las que necesito exportar a lo sumo un registro de cada tabla. Mi gran interrogante es que método me combiene mas utilizar. En un principio se me ocurre exportar a un archivo de texto separado por algun delimitador, o bien, crear una db access temporal. Lo que quiero hacer es proteger estos datos, cifrandolos, aunque para eso no tengo ningun problema. El tema esta, en que tengo unos cuantos campos memo y blobs, asi que no se me ocurre que es lo mejor a hacer.

Saludos

MaMu 04-05-2008 19:31:04

Me convence el tema de usar texto separado por limitadores, de hecho, lo tengo ya resuelto, pero lo que quiciera hacer es poder poner algun tipo de encabezado o etiqueta, al mejor estilo de una Sección en un archivo INI, ya que de esta forma, si tuviera dato debajo del encabezado, podria saber que dato estoy obteniendo y si no hay dato, ir a otro encabezado.
Por ejemplo

Código:


[tablaA]
valor_campo1|valor_campo2|valor_campo3
[tablaB]
valor_campo1|valor_campo2|valor_campo3|valor_campo4
valor_campo1|valor_campo2|valor_campo3|valor_campo4
valor_campo1|valor_campo2|valor_campo3|valor_campo4
[tablaC]
[tablaD]
valor_campo1|valor_campo2

Por ejemplo, en el encabezado tablaC, no hay datos.
No se si se entiende lo que quiero hacer.

seoane 04-05-2008 19:46:12

Un tema interesante, y se me ocurren unas cuantas ideas.

La primera es que si quieres hacerlo con la misma estructura que un archivo ini no tienes mas que utilizar la clase TInifile, y darle un nombre a cada una de las lineas. Algo así:
Código:

[tablaA]
1=valor_campo1|valor_campo2|valor_campo3
[tablaB]
1=valor_campo1|valor_campo2|valor_campo3|valor_campo4
2=valor_campo1|valor_campo2|valor_campo3|valor_campo4
3=valor_campo1|valor_campo2|valor_campo3|valor_campo4
[tablaC]
[tablaD]
1=valor_campo1|valor_campo2

De esta manera puedes utilizar las funciones de la clase TInifile para escribir y leer en los archivos .ini. Para escribir solo tienes que ir nombrando las lineas 1,2,3 ... y para leer solo tienes que ir leyendo los valores 1,2,3 ... hasta encontrar uno vacío (ahora mismo no recuerdo si la clase TInifile tiene alguna función para enumeras los valores de una sección, si es así aun resulta todavía más fácil).

Con respecto al cifrado te recomiendo algo como esto:
http://delphi.jmrds.com/?q=node/44

y para codificar campos binarios a texto algo como esto (aunque solo funcione en XP o superiores :( ):
http://delphi.jmrds.com/?q=node/43

PD: ¿Has pensado en utilizar xml? :confused:

MaMu 04-05-2008 21:33:29

Con respecto al cifrado, ya tenia presente el usar UCifrador, DCPconst, aunque voy a incorporar base64 para el tema de los cambos binarios. Hasta aquí todo bien. Habia pensado ya en usar TIniFiles, pero no me convence el tema del indexado de cada parámetro de sección, ya que son variables y/o nulos, y me resulta un poco molesto para implementarlo de esta forma, y para colmo, los registros que guarde de las diferentes tablas, no tendrán ni siquiera los mismos campos.
No habia tomado en cuenta la posibilidad de usar xml. De todas maneras estoy tratando de implementar un archivo, en donde las secciones siempre sean fijas, una suerte de estilo html

Código:


<seccion1>
datos cifrados
</seccion1>
//salto de linea
<seccion2>
datos cifrados
</seccion2>

Y asi, trabajar en base a la cantidad de líneas que cuente entre dos etiquetas de una sección

Código:


<seccion1>
datos cifrados
</seccion1>

Por lo que, para restaurar el contenido en la db, solo me resta recomponer los datos de cada linea encontrada.

Saludos


La franja horaria es GMT +2. Ahora son las 15:06:54.

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