elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Guía actualizada para evitar que un ransomware ataque tu empresa


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting
| | |-+  Base de datos desde archivo de texto.
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: Base de datos desde archivo de texto.  (Leído 6,089 veces)
calvin2sr

Desconectado Desconectado

Mensajes: 16


Ver Perfil
Base de datos desde archivo de texto.
« en: 19 Marzo 2013, 13:38 pm »

Hola:
A ver si me podeis ayudar. Tengo un archivo de texto con varias lineas, todas del mismo tipo. palabra0 palabra1 palabra2 palabra3. Me gustaria coger la primera palabra del archivo de texto y meterla en un campo de una base de datos mysql, meter la palabra2 en otro campo, etc y asi con cada linea del archivo de texto que seria una entrada de la base de datos. Me podeis orientar de por donde podria empezar? es que estoy muy verde en este tema.
Gracias.


En línea

Danyfirex


Desconectado Desconectado

Mensajes: 493


My Dear Mizuho


Ver Perfil
Re: Base de datos desde archivo de texto.
« Respuesta #1 en: 19 Marzo 2013, 14:20 pm »

Debes especificar con que lo quieres hacer batch,Autoit,vbscritps,python,ruby,perl.  :silbar:


En línea

Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.817



Ver Perfil
Re: Base de datos desde archivo de texto.
« Respuesta #2 en: 19 Marzo 2013, 14:28 pm »

Bueno, no somos adivinos, ¿Windows o Linux?

No manejo las bases de datos MySQL así que desconozco como hacerlo, pero podría ser algo así:

AddData.bat
Código
  1. @Echo OFF
  2. For /F "Usebackq Tokens=*" %%X in ("Archivo.txt") Do (... "campo1" "%%X")


Quizás esto te sirva:

Google + "commandline add entry to mysql"

Citar
To insert data into MySQL table you would need to use SQL INSERT INTO command. You can insert data into MySQL table by using mysql> prompt or by using any script like PHP.
Syntax:

Here is generic SQL syntax of INSERT INTO command to insert data into MySQL table:

INSERT INTO table_name ( field1, field2,...fieldN )

www.tutorialspoint.com/mysql/mysql-insert-query.htm

http://www.ntchosting.com/mysql/insert-data-into-table.html

http://www.iis-aid.com/articles/how_to_guides/creating_mysql_database_via_the_command_line

http://dev.mysql.com/doc/refman/5.0/en/
En línea

calvin2sr

Desconectado Desconectado

Mensajes: 16


Ver Perfil
Re: Base de datos desde archivo de texto.
« Respuesta #3 en: 19 Marzo 2013, 15:08 pm »

El script seria ejecutado en windows, aunque pensandolo bien, seguro que hay otra manera mas facil de hacerlo. A lo mejor con funciones tipo grep y demas se puede sacar algo. El objetivo principal del script seria ir cogiendo de ese archivo de texto distintos valores y mostrar por pantalla solo los que me interese. Ejemplo:
El archivo es de este tipo:

fecha0 tipo0 variable-a0 variable-b0
fecha1 tipo1 variable-a1 variable-b2

Ese archivo se va actualizando cada cierto tiempo.

Querria algo para sacar el maximo de la variable-a0 en un mismo dia. Y tambien que cuando esa variable-a0 se acerque a un determinado valor que yo decida, me envie un email.

Me podriais dar ideas de cual seria la forma mas facil de hacerlo?
Muchas gracias.
En línea

jhonatanAsm


Desconectado Desconectado

Mensajes: 376



Ver Perfil WWW
Re: Base de datos desde archivo de texto.
« Respuesta #4 en: 19 Marzo 2013, 15:41 pm »

creo que con un:
insert into load data local infile
de mysql se puede realizar.

salu2.
En línea

mi primer lenguaje fue ensamblador, tengo 60 años, y no creo que haya sido un error.

- La mayor complejidad de todas es hacer complejo algo que no lo es.

- El inteligente no es aquel que lo sabe todo sino aquel que sabe utilizar lo poco que sabe.
Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.817



Ver Perfil
Re: Base de datos desde archivo de texto.
« Respuesta #5 en: 19 Marzo 2013, 15:57 pm »

¿Entonces lo de añadir datos a la base desde la consola ya no quieres?

A ver si no he entendido mal:
Ahora sólo sería obtener el valor numérico de la tercera palabra de la primera línea, o sería de cada tercera palabra de cada línea? y en fín si el número es mayor de "X", que te mande un email.

La manera más sencilla desde Windows es Batch, para lo del email puedes usar esta utilidad Commandline (no requiere autentificación de ningún tipo): https://www.zeta-uploader.com/es

Esto comprueba el tercer token de cada línea, si es mayor que "X" envía un email.
He usado como delimitador el caracter del espacio, quizás debas modificarlo a tus necesidades...



Código
  1. @Echo OFF
  2.  
  3. Set "Max=100"
  4. Set "Interval=5"
  5.  
  6. :Loop
  7. Echo [%TIME:~0,-3%] Checkando...
  8. For /F "Usebackq Tokens=1-3* Delims= " %%A in ("Archivo.txt") Do (
  9. If %%C GTR %MAX% (
  10. Echo [%TIME:~0,-3%] Variable: %%C es mayor que %MAX%, enviando email...
  11. Zulc.exe -receivers="tuemail@hot.com" -remarks="Test remark" -subject="Test subject")
  12. )
  13. )
  14. (Ping -n %INTERVAL% Localhost >NUL) & (GOTO :LOOP)

En línea

calvin2sr

Desconectado Desconectado

Mensajes: 16


Ver Perfil
Re: Base de datos desde archivo de texto.
« Respuesta #6 en: 19 Marzo 2013, 17:05 pm »

¿Entonces lo de añadir datos a la base desde la consola ya no quieres?

A ver si no he entendido mal:
Ahora sólo sería obtener el valor numérico de la tercera palabra de la primera línea, o sería de cada tercera palabra de cada línea? y en fín si el número es mayor de "X", que te mande un email.

La manera más sencilla desde Windows es Batch, para lo del email puedes usar esta utilidad Commandline (no requiere autentificación de ningún tipo): https://www.zeta-uploader.com/es

Esto comprueba el tercer token de cada línea, si es mayor que "X" envía un email.
He usado como delimitador el caracter del espacio, quizás debas modificarlo a tus necesidades...



Código
  1. @Echo OFF
  2.  
  3. Set "Max=100"
  4. Set "Interval=5"
  5.  
  6. :Loop
  7. Echo [%TIME:~0,-3%] Checkando...
  8. For /F "Usebackq Tokens=1-3* Delims= " %%A in ("Archivo.txt") Do (
  9. If %%C GTR %MAX% (
  10. Echo [%TIME:~0,-3%] Variable: %%C es mayor que %MAX%, enviando email...
  11. Zulc.exe -receivers="tuemail@hot.com" -remarks="Test remark" -subject="Test subject")
  12. )
  13. )
  14. (Ping -n %INTERVAL% Localhost >NUL) & (GOTO :LOOP)


El problema es que el archivo de texto es un log, el cual se va actualizando cada cierto tiempo añadiendo una linea de cada vez que se actualiza al final del archivo de texto. Entonces con ese programa mirara todas las lineas, se supone que yo quiero que compruebe el valor si es mayor de uno dado cada vez que se actualice para ver si en la linea actualizada el valor es mayor al que yo le pase. No se si me entendeis. Me parece que voy hacer 2 programas separados, uno para el email y otro para las otras instrucciones con los valores. Yo creia que metiendo los datos del log dentro de la base de datos, al ser mysql esta ya tiene todas las instrucciones hechas y tu puedes operar con ella con normalidad. Si quieres saber todas las entradas en tal fecha pues ya tienes una instruccion en mysql, que quieres saber cual fue el valor maximo de una variable en este mes, pues tienes otra instruccion diferente. El caso es que meter todo el archivo a la base de datos se puede hacer algo complicado no? por eso os dije lo de que a lo mejor habia otra forma de implementar lo que yo quiero obtener de esos datos.
Muchas gracias por las respuestas.
En línea

Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.817



Ver Perfil
Re: Base de datos desde archivo de texto.
« Respuesta #7 en: 19 Marzo 2013, 18:06 pm »

No hay problema...

Este script sólamente comprueba el valor de la última línea.



PD: Las explicaciones están en el código.

Código:
@Echo OFF
SETLOCAL ENABLEDELAYEDEXPANSION

Set /A "Max=100"
Set /A "Interval=10"
Set /A "LastFileSize=0"
Set /A "CurrentFileSize=0"

Set "File=C:\Users\Administrador\Desktop\1.txt"

:Loop

REM Comprueba el tamaño actual del archivo LOG
For %%F in ("%File%") Do (Set /A "CurrentFileSize=%%~zF")

REM Si el tamaño actual no es igual al ultimo tamaño registrado [Es decir, si el LOG se ha actualizado...]
If %CurrentFileSize% NEQ %LastFileSize% (
Set /A "LastFileSize=%CurrentFileSize%"

Echo [%TIME:~0,-3%] Comprobando actualización del LOG...
For /F "Usebackq Tokens=1-3* Delims= " %%A in ("%File%") Do (Set /A "Value=%%C")

REM Si el valor es mayor que X...
If !Value! GTR %MAX% (
Echo [%TIME:~0,-3%] Valor: "!Value!" es mayor que "%MAX%".
Echo [%TIME:~0,-3%] Enviando e-mail...
rem Zulc.exe -receivers="tuemail@hot.com" -remarks="Test remark" -subject="Test subject")
) ELSE (
Echo [%TIME:~0,-3%] Valor: "!Value!" Todo Correcto.
)

) ELSE (
REM De lo contrario...
Echo [%TIME:~0,-3%] Nada que comprobar.
)
(Ping -n %INTERVAL% Localhost >NUL) & (GOTO :LOOP)
« Última modificación: 19 Marzo 2013, 18:08 pm por EleKtro H@cker » En línea

calvin2sr

Desconectado Desconectado

Mensajes: 16


Ver Perfil
Re: Base de datos desde archivo de texto.
« Respuesta #8 en: 19 Marzo 2013, 18:10 pm »

No hay problema...

Este script sólamente comprueba el valor de la última línea.



PD: Las explicaciones están en el código.

Código:
@Echo OFF
SETLOCAL ENABLEDELAYEDEXPANSION

Set /A "Max=100"
Set /A "Interval=10"
Set /A "LastFileSize=0"
Set /A "CurrentFileSize=0"

Set "File=C:\Users\Administrador\Desktop\1.txt"

:Loop

REM Comprueba el tamaño actual del archivo LOG
For %%F in ("%File%") Do (Set /A "CurrentFileSize=%%~zF")

REM Si el tamaño actual no es igual al ultimo tamaño registrado [Es decir, si el LOG se ha actualizado...]
If %CurrentFileSize% NEQ %LastFileSize% (
Set /A "LastFileSize=%CurrentFileSize%"

Echo [%TIME:~0,-3%] Comprobando actualización del LOG...
For /F "Usebackq Tokens=1-3* Delims= " %%A in ("%File%") Do (Set /A "Value=%%C")

REM Si el valor es mayor que X...
If !Value! GTR %MAX% (
Echo [%TIME:~0,-3%] Valor: "!Value!" es mayor que "%MAX%".
Echo [%TIME:~0,-3%] Enviando e-mail...
rem Zulc.exe -receivers="tuemail@hot.com" -remarks="Test remark" -subject="Test subject")
) ELSE (
Echo [%TIME:~0,-3%] Valor: "!Value!" Todo Correcto.
)

) ELSE (
REM De lo contrario...
Echo [%TIME:~0,-3%] Nada que comprobar.
)
(Ping -n %INTERVAL% Localhost >NUL) & (GOTO :LOOP)
Muchas gracias, voy a probarlo y luego te digo si se asemeja a lo que quiero. Y para lo otro de hacer operaciones sobre esos datos cogidos del log se te ocurra alguna idea? la de la base de datos creo que es buena pero no se si da mucho choyo ir cogiendo dato por dato e ir metiendolos en campos de mi base mysql.
Un saludo y de nuevo muchas gracias.
En línea

calvin2sr

Desconectado Desconectado

Mensajes: 16


Ver Perfil
Re: Base de datos desde archivo de texto.
« Respuesta #9 en: 21 Marzo 2013, 00:09 am »

He estado intentando probar tu programa pero estoy algo verte en esto de los batch. No se supone que tengo que meter el codigo en un archivo.bat y ejecutar desde un cmd poniendo el archivo tal cual? por ejemplo. Estoy dentro del directorio y hago un programa.bat
Estoy haciendolo bien? es que si lo hago asi me crea un bucle infinito diciendo que le falta un operando.
Muchas gracias por contestar.
En línea

Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines