Necrolord
17-06-2011, 16:46
Ciao a tutti ho un DB mysql su macchina redhat, tale DB contiene una tabella chiamata TabellaLog così descritta
+-------------------+--------------+------+-----+---------+----------+
| Field | Type | Null | Key | Default | Extra |
+-------------------+--------------+------+-----+---------+----------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| timestamp | int(14) | NO | MUL | 0 | |
| filename | varchar(255) | NO | MUL | | |
| log | longtext | NO | | NULL | |
| exit_code | varchar(4) | NO | | | |
+-------------------+--------------+------+-----+---------+-----------+
il campo "log" contiene vari dati tra cui la dimensione (tramite un "ls -l" della shell)di un file trasferito.
ad esempio l'inizio del log potrebbe inziare come
-rwxrwxr-x 1 user user 67550 Jun 17 17:30 /var/tmp/file1.txt
Avrei necessità di sapere se esiste un comando (simile al grep) per eseguire una query che mi restituisca il match trovato in base ad una regular expression.
Se ad esempio eseguo la query
select id, log REGEXP 'user\ +user\ +[0-9]' as pippo from TabellaLog order by pippo;
ottengo solo una cosa del tipo
+-------+-------+
| id | pippo |
+-------+-------+
| 33095 | 0 |
| 33096 | 0 |
| 33097 | 0 |
| 33098 | 0 |
| 33100 | 0 |
...... ..
| 33094 | 1 |
| 33099 | 1 |
| 33102 | 1 |
| 33103 | 1 |
| 33104 | 1 |
..... ...
poiche REGEXP restuisce solo il valore 0 o 1 in base se non trova o trova il pattern della regexp...a me invece serve un comando che mi restituisca anche la stringa (es "user user 67550").
In particolare devo estrarre il valore numerico (che è la dimensione del file contenuto nel campo log) da usare come "order by" per ordinare la "select * from "TabellaLog" ecc ecc".
In modo da eseguire un'unica query che possa usare in una pagina php per creare una tabella html ordinata per la dimensione dei file...considerando che la dimensione di tali file non è un campo della tabella mysql ma una stringa contenta nel campo log della tabella.
Grazie a chiunque vorrà aiutarmi :)
+-------------------+--------------+------+-----+---------+----------+
| Field | Type | Null | Key | Default | Extra |
+-------------------+--------------+------+-----+---------+----------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| timestamp | int(14) | NO | MUL | 0 | |
| filename | varchar(255) | NO | MUL | | |
| log | longtext | NO | | NULL | |
| exit_code | varchar(4) | NO | | | |
+-------------------+--------------+------+-----+---------+-----------+
il campo "log" contiene vari dati tra cui la dimensione (tramite un "ls -l" della shell)di un file trasferito.
ad esempio l'inizio del log potrebbe inziare come
-rwxrwxr-x 1 user user 67550 Jun 17 17:30 /var/tmp/file1.txt
Avrei necessità di sapere se esiste un comando (simile al grep) per eseguire una query che mi restituisca il match trovato in base ad una regular expression.
Se ad esempio eseguo la query
select id, log REGEXP 'user\ +user\ +[0-9]' as pippo from TabellaLog order by pippo;
ottengo solo una cosa del tipo
+-------+-------+
| id | pippo |
+-------+-------+
| 33095 | 0 |
| 33096 | 0 |
| 33097 | 0 |
| 33098 | 0 |
| 33100 | 0 |
...... ..
| 33094 | 1 |
| 33099 | 1 |
| 33102 | 1 |
| 33103 | 1 |
| 33104 | 1 |
..... ...
poiche REGEXP restuisce solo il valore 0 o 1 in base se non trova o trova il pattern della regexp...a me invece serve un comando che mi restituisca anche la stringa (es "user user 67550").
In particolare devo estrarre il valore numerico (che è la dimensione del file contenuto nel campo log) da usare come "order by" per ordinare la "select * from "TabellaLog" ecc ecc".
In modo da eseguire un'unica query che possa usare in una pagina php per creare una tabella html ordinata per la dimensione dei file...considerando che la dimensione di tali file non è un campo della tabella mysql ma una stringa contenta nel campo log della tabella.
Grazie a chiunque vorrà aiutarmi :)