Autor
|
Tema: Base de datos desde archivo de texto. (Leído 6,647 veces)
|
calvin2sr
Desconectado
Mensajes: 16
|
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
Mensajes: 493
My Dear Mizuho
|
Debes especificar con que lo quieres hacer batch,Autoit,vbscritps,python,ruby,perl.
|
|
|
En línea
|
|
|
|
|
calvin2sr
Desconectado
Mensajes: 16
|
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
|
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
Mensajes: 9.878
|
¿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/esEsto 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... :Loop Echo [ %TIME:~0,-3%] Checkando... For /F "Usebackq Tokens=1-3* Delims= " %%A in ("Archivo.txt" ) Do ( Echo [ %TIME:~0,-3%] Variable: %%C es mayor que %MAX%, enviando email... Zulc.exe -receivers="tuemail@hot.com" -remarks="Test remark" -subject="Test subject") ) ) (Ping -n %INTERVAL% Localhost >NUL) & (GOTO : LOOP)
|
|
|
En línea
|
|
|
|
calvin2sr
Desconectado
Mensajes: 16
|
¿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/esEsto 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... :Loop Echo [ %TIME:~0,-3%] Checkando... For /F "Usebackq Tokens=1-3* Delims= " %%A in ("Archivo.txt" ) Do ( Echo [ %TIME:~0,-3%] Variable: %%C es mayor que %MAX%, enviando email... Zulc.exe -receivers="tuemail@hot.com" -remarks="Test remark" -subject="Test subject") ) ) (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
Mensajes: 9.878
|
No hay problema... Este script sólamente comprueba el valor de la última línea. PD: Las explicaciones están en el 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
Mensajes: 16
|
No hay problema... Este script sólamente comprueba el valor de la última línea. PD: Las explicaciones están en el 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
Mensajes: 16
|
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
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Mostrar texto de una base de datos
PHP
|
Fireball-CH
|
3
|
6,774
|
15 Mayo 2007, 00:23 am
por Fireball-CH
|
|
|
Manejar archivo .txt desde java (ingresar datos, modificar datos, buscar datos y
Java
|
chuystoty
|
9
|
106,394
|
20 Mayo 2012, 06:13 am
por ELMED
|
|
|
Insertar datos de dos campos hidden y un campo de texto en la base de datos.
Desarrollo Web
|
70N1
|
4
|
4,970
|
6 Octubre 2012, 20:22 pm
por RevangelyonX
|
|
|
listar, guardar en base datos un archivo desde java
Java
|
washington8277
|
4
|
4,447
|
1 Febrero 2014, 14:48 pm
por washington8277
|
|
|
Conectarse a una base de datos que esta en un host desde mi archivo .html
Desarrollo Web
|
Razzari
|
1
|
1,967
|
7 Septiembre 2016, 16:52 pm
por Jeferi
|
|