View Full Version : [MySQL] Programma per generare insert random in un Database
Helldron
01-12-2010, 09:58
Ciao a tutti,
sto cercando un modo per inserire in alcune tabelle del mio DataBase migliaia di record e quindi dovrei fare tante insert (anche random ovviamente), cosa che a mano non è possibile.
Mi hanno accennato a programmi che automatizzano tutto questo in maniera abbastanza semplice. Qualche idea???
Grazie :D
Ciao a tutti,
sto cercando un modo per inserire in alcune tabelle del mio DataBase migliaia di record e quindi dovrei fare tante insert (anche random ovviamente), cosa che a mano non è possibile.
Mi hanno accennato a programmi che automatizzano tutto questo in maniera abbastanza semplice. Qualche idea???
Grazie :D
Scrivertelo? :D
Penso che se tu non abbia particolari 'esigenze' della tipologia di dati da ficcarci dentro, puoi scriverlo tranquillamente, 10 minuti di lavoro con PHP o Python :)
Puoi farlo direttamente in MySql con delle Stored Procedure (http://www.mysqltutorial.org/mysql-stored-procedure-tutorial.aspx), oppure in un qualsiasi linguaggio di programmazione crei un .txt contenente i dati che poi caricherai con un Load Data Infile (http://dev.mysql.com/doc/refman/5.1/en/load-data.html) nel database.
Puoi farlo direttamente in MySql con delle Stored Procedure (http://www.mysqltutorial.org/mysql-stored-procedure-tutorial.aspx), oppure in un qualsiasi linguaggio di programmazione crei un .txt contenente i dati che poi caricherai con un Load Data Infile (http://dev.mysql.com/doc/refman/5.1/en/load-data.html) nel database.
Ma volendo anche senza Stored, basta crearsi un Loop in SQL direttamente.
Le Stored inoltre ti vincolano ad usare InnoDB, se lui ha MyISAM è fregato (sotto quell'aspetto).
Comunque anche queste sono due soluzioni ottime!
khelidan1980
01-12-2010, 13:01
che framework usi per gestire il db? Ad esempio con Rails ci sono giè delle api che ti permettono di farlo
cdimauro
01-12-2010, 13:15
Le Stored inoltre ti vincolano ad usare InnoDB, se lui ha MyISAM è fregato (sotto quell'aspetto).
No, funzionano anche con MyISAM.
Quello che non funziona con questo "engine" (sic.) è l'integrità referenziale (robetta da poco, insomma).
No, funzionano anche con MyISAM.
Quello che non funziona con questo "engine" (sic.) è l'integrità referenziale (robetta da poco, insomma).
Hanno introdotto le Stored su MyISAM? Sei sicuro Cesare? :D
Non ci sono le views ma ci sono le Stored?
Sono rimasto indietro su MySQL :cool:
A cosa vuoi che serva l'integrità :D
bobbytre
01-12-2010, 13:41
usando il php
<?php
srand(time());
$base="aaaaeeeeiiiioooouuuuabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz";
for($i=0;$i<10000;$i++)
{
$campo1 = substr(str_shuffle($base),0,rand()%16+3);
$campo2 = substr(str_shuffle($base),0,rand()%16+3);
$campo3 = rand()%50000;
$Q = "INSERT INTO tabella VALUES('$campo1','$campo2','$campo3');";
echo $Q."\n";
mysql_query( ...
}
?>
Helldron
01-12-2010, 13:58
usando il php
<?php
srand(time());
$base="aaaaeeeeiiiioooouuuuabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz";
for($i=0;$i<10000;$i++)
{
$campo1 = substr(str_shuffle($base),0,rand()%16+3);
$campo2 = substr(str_shuffle($base),0,rand()%16+3);
$campo3 = rand()%50000;
$Q = "INSERT INTO tabella VALUES('$campo1','$campo2','$campo3');";
echo $Q."\n";
mysql_query( ...
}
?>
Allora ragazzi, grazie per le risposte :) , ma io non conosco python ne php.
Dal codice mi sembra abbastanza intuitivo quello che fa ma dove lo uso questo codice??? Inoltre, anche se mi sembra di intuire cosa fa quel codice php, se mi spieghi brevemente quello che fa sarebbe meglio (sopratutto le prime righe e le ultime 2).
Conosco bene Java ma cercavo un modo un pochino più veloce che scrivere una classe che tramite JDBC accede al DB.
Grazie.
Allora ragazzi, grazie per le risposte :) , ma io non conosco python ne php.
Dal codice mi sembra abbastanza intuitivo quello che fa ma dove lo uso questo codice??? Inoltre, anche se mi sembra di intuire cosa fa quel codice php, se mi spieghi brevemente quello che fa sarebbe meglio (sopratutto le prime righe e le ultime 2).
Conosco bene Java ma cercavo un modo un pochino più veloce che scrivere una classe che tramite JDBC accede al DB.
Grazie.
Bhe ti basta il modulo MySQL per Java.
Non devi scriverti uan classe, ti connetti e lanci il comando execute, traducendo il tutto da PHP a Java (il codice sopra).
Per il resto, per far 'andare' il codice sopra postato devi metterlo fisicamente su un web server con supporto PHP.
bobbytre
01-12-2010, 14:13
<?php
// INIZIALIZZA IL RANDOM
srand(time());
// VOCALI E ALFABETO RIPETUTO COME BASE PER I CARATTERI DELLA STRINGA CASUALE
$base="aaaaeeeeiiiioooouuuuabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz";
// CICLO
for($i=0;$i<10000;$i++)
{
// MISCELA A CASO LE LETTERE DELLA BASE E PRENDE UNA SOTTOSTRINGA DI DIMENSIONE CASUALE TRA 3 e 19
$campo1 = substr(str_shuffle($base),0,rand()%16+3);
$campo2 = substr(str_shuffle($base),0,rand()%16+3);
// PRENDE UN NUMERO A CASO TRA 0 e 50000
$campo3 = rand()%50000;
// UN ESEMPIO ALLA BUONA DI UNA QUERY CON VALORI CASUALI
$Q = "INSERT INTO tabella VALUES('$campo1','$campo2','$campo3');";
// STAMPA A VIDEO LA STRINGA
echo $Q."\n";
// ACCENNO DEL COMANDO PHP PER ESEGUIRE UNA QUERY SU MYSQL
mysql_query( ...
}
?>
cdimauro
02-12-2010, 05:46
Hanno introdotto le Stored su MyISAM? Sei sicuro Cesare? :D
Non ci sono le views ma ci sono le Stored?
Sono rimasto indietro su MySQL :cool:
Questo depone a tuo favore. :fagiano:
A cosa vuoi che serva l'integrità :D
Infatti i miei colleghi ne hanno il terrore: "si potrebbe cancellare tutto". :rolleyes:
Che poi un database rimanga inconsistente, beh, cosa vuoi che sia. Sciocchezzuole... :muro:
Questo depone a tuo favore. :fagiano:
Infatti i miei colleghi ne hanno il terrore: "si potrebbe cancellare tutto". :rolleyes:
Che poi un database rimanga inconsistente, beh, cosa vuoi che sia. Sciocchezzuole... :muro:
Appunto, l'incosistenza è uno dei NON parametri di un DBMS :D.
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.