• Publicidad

Convertir archivo .dat a SQL

Todo acerca de las bases de datos que existen: SQL, MySQL, Oracle, Postgres, CSV, etc.

Convertir archivo .dat a SQL

Notapor Kiloko » 2007-08-27 12:08 @547

Necesito crear un programa que agarre un archivo 1234.dat (este archivo contiene una lista de parámetros) y quiero que lo transforme a .sql. Fácil, ¿no?...
:D
¿Algún módulo, para hacer esto o algún norte...?
Nunca interrumpas a tu enemigo cuando está cometiendo un error
Napoleón Bonaparte
Avatar de Usuario
Kiloko
Perlero nuevo
Perlero nuevo
 
Mensajes: 243
Registrado: 2007-07-10 18:26 @810
Ubicación: MOnterrey NL

Publicidad

Notapor kidd » 2007-08-28 11:57 @540

Tu archivo .dat ¿cómo tiene los datos? Hasta no saberlo no te podríamos recomendar un módulo en especifico, sin embargo, quizá quieras checar el módulo Data::Table, a lo mejor tiene lo que buscas.

Saludos
Uriel Lizama Perl programmer fundador de Perl en Español
Perl Programming Language
Avatar de Usuario
kidd
Creador de Perl en Español
Creador de Perl en Español
 
Mensajes: 1166
Registrado: 2003-10-15 16:52 @744
Ubicación: México

Notapor explorer » 2007-08-28 13:00 @583

Aunque sean una lista de parámetros, ¿cómo hay que hacer la consulta SQL? ¿hacer una query por parámetro? ¿Los parámetros son autoexcluyentes y se pueden agrupar con OR? ¿Forma cada parámetro una query o son todas para una sola? ¿Entre los parámetros se indica el campo(s) por el que se debe(n) hacer la query?
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Notapor Kiloko » 2007-08-29 15:27 @685

Así es. El archivo .dat tiene datos, que yo genero. Tengo mi programa y recolecta datos, y vale, todo bien hasta que creo mi .dat pero ahora necesito agarrar esa info y meterla a la base de datos SQL o más bien convertir ese .dat en .sql :?: y ahí es dónde me atoro...
Nunca interrumpas a tu enemigo cuando está cometiendo un error
Napoleón Bonaparte
Avatar de Usuario
Kiloko
Perlero nuevo
Perlero nuevo
 
Mensajes: 243
Registrado: 2007-07-10 18:26 @810
Ubicación: MOnterrey NL

Notapor explorer » 2007-08-29 15:35 @691

Para meter información en la base de datos sólo tienes que ir ejecutando INSERT de la información del fichero dat.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Notapor Kiloko » 2007-08-29 16:58 @748

Así es. Serían en total 2 programas:
Programa 1: Agarra mi archivo.dat y lo convierte en .sql.
Programa 2 : Agarra el .sql y como dice explorer, lo inserta, automáticamente.

El objetivo de esto es tener temporales de uso, que quiere decir esto, que los archivos se crean y se guardan, y lo que hacen estos programas son 3 cosas:
leen, crean (.sql) e insertan, aquí la cosa es que no tengo muy clara la idea de sql en cuanto a tablas o formatos, no tuve problema al crear el .dat; tiene info como esta:
Código: Seleccionar todo
1234:encendido:ups:1234kbz
pero yo necesito guardar esto en .sql. para después insertarlo. Tengo la info de las tablas y donde se tiene que meter cada cosa, pero no encuentro el lazo entre estos 2 formatos, un .dat y un .sql.
Nunca interrumpas a tu enemigo cuando está cometiendo un error
Napoleón Bonaparte
Avatar de Usuario
Kiloko
Perlero nuevo
Perlero nuevo
 
Mensajes: 243
Registrado: 2007-07-10 18:26 @810
Ubicación: MOnterrey NL

Notapor explorer » 2007-08-29 17:14 @759

¿No es complicarlo mucho? Se pueden hacer los 3 programas en sólo uno, sin tener que crear ficheros temporales. Incluso aunque quieras guardar los ficheros temporales para un uso futuro, también puedes hacerlo desde ese mismo programa.

En el tutorial de Uriel que hemos comentado en otro hilo hace bien poco está el mejor ejemplo: conexión e inserción de datos.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Notapor Kiloko » 2007-08-29 17:27 @768

mmmmm :?: mmm este,,,,, :?

ok ok,,, deja le doy bien una leída al tutorial, por que incluso yo ya me perdí...
En sí la clave está en convertir, un .dat a un .sql... y ya lo demás a su tiempo. Creo que comenzaré con eso...

¿Alguna sugerencia? :?:
Nunca interrumpas a tu enemigo cuando está cometiendo un error
Napoleón Bonaparte
Avatar de Usuario
Kiloko
Perlero nuevo
Perlero nuevo
 
Mensajes: 243
Registrado: 2007-07-10 18:26 @810
Ubicación: MOnterrey NL

Notapor explorer » 2007-08-29 17:43 @780

He encontrado un ejemplo con DBD::CSV:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
    require DBI;
    my $dbh = DBI->connect("DBI:CSV:f_dir=/etc;csv_eol=\n;"
                           . "csv_sep_char=:;csv_quote_char=;"
                           . "csv_escape_char=");
    $dbh->{'csv_tables'}->{'passwd'} = {
        'col_names' => ["login", "password", "uid", "gid", "realname",
                        "directory", "shell"]
    };
    $sth = $dbh->prepare("SELECT * FROM passwd");
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4
porque el formato del fichero passwd es igual que tu fichero dat. Pero repito... esto me parece que es complicarlo mucho.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Notapor explorer » 2007-08-29 17:56 @789

Quizás la solución más sencilla, según lo que quieres, sea:
Código: Seleccionar todo
* abrir fichero .dat
* abrimos el fichero sql en escritura
* por cada línea del fichero
*   sacamos los campos, separando por ':'
*   creamos la sentencia INSERT con esos valores
*   pintamos la sentencia al fichero sql
* cerramos ficheros
pero lo propuesto por mí es:
Código: Seleccionar todo
* abro la conexión a la base de datos
* bucle de captura de datos
*   obtenemos los datos
*   insertamos los datos en la base de datos
* cerramos la conexión
Esto es factible si en la captura de datos tenemos tiempo para hacer el INSERT en la base. Si no es así (por ejemplo, por que obtenemos los datos a partir de una tarjeta capturadora de datos), entonces:
Código: Seleccionar todo
* bucle de captura de datos
*   obtenemos los datos
*   les guardamos en una estructura de datos, en memoria
* abro la conexión a la base de datos
* bucle por todos los datos capturados
*   insertamos los datos en la base de datos
* cerramos la conexión
Y, finalmente, si la captura de datos es tan delicada que no se puede hacer en Perl, entonces sí que hay que hacerlo con dos programas distintos, pero el segundo haría lo mismo que lo puesto en el ejemplo de escribir en el sql, pero realmente sin escribir en el sql, sino haciendo el INSERT en la base de datos.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Siguiente

Volver a Bases de datos

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 2 invitados