Popolare tabella da file .sql

peppeocchi

Utente Attivo
20 Apr 2013
30
0
0
Salve,
ho la necessità di popolare una tabella da un file .sql
Il file .sql è di questo tipo:

Codice:
INSERT INTO TABELLA VALUES (id1,nome1,...);
INSERT INTO TABELLA VALUES (id2,nome2,...);
...

Ora come ora la popolo in questo modo

PHP:
$filesql = "http://www.link.it/file.sql";
$handle = fopen($filesql, "r");

while(!feof($handle)) {
	$query = fgets($handle, 4096);
	if(!$query) break;
	$this->query($query);
}

Il file .sql è di circa 20000 righe.

Vorrei, se possibile, ottimizzare le prestazioni, visto che adesso ci mette circa 5-6 secondi.

Ho da poco (2 giorni) iniziato a smanettare con mysqli, secondo voi potrei migliorare le prestazioni facendo una multi_query su tutto il contenuto del file?

Sono bene accette tutte le possibili soluzioni :)

Grazie
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
fai prima a copiare e incollare il contenuto nel SQL di phpmyadmin o ad usare la funzione "Importa" indicandogli il file dda caricare
 

peppeocchi

Utente Attivo
20 Apr 2013
30
0
0
Il problema è che ho circa 30 file .sql da aggiornare.
In pratica aggiorno la tabella dal file .sql, la copio sulla tabella relativa all'aggiornamento (ne abbiamo parlato sull'altro post qualche ora fa ;) ), svuoto la prima tabella, e la popolo con il prossimo file .slq eccetera.

Quel pezzo di codice viene eseguito con un cron alle 8 del mattino ogni giorno.

Ho separato i cron degli aggiornamenti in diversi file, che aggiornano circa 10 tabelle l'uno.

Per ogni file .sql il tempo di aggiornamento è di 5-6 secondi, moltiplicato per 10 file.sql (più gli altri controlli che faccio) arrivo a circa 65-70 secondi per cron.

Tutto questo per dire che non posso farlo manualmente :)
 

Reck

Nuovo Utente
29 Gen 2011
2
0
0
Salve,
ho la necessità di popolare una tabella da un file .sql
Il file .sql è di questo tipo:

Codice:
INSERT INTO TABELLA VALUES (id1,nome1,...);
INSERT INTO TABELLA VALUES (id2,nome2,...);
...

Ora come ora la popolo in questo modo

PHP:
$filesql = "http://www.link.it/file.sql";
$handle = fopen($filesql, "r");

while(!feof($handle)) {
	$query = fgets($handle, 4096);
	if(!$query) break;
	$this->query($query);
}

Il file .sql è di circa 20000 righe.

Vorrei, se possibile, ottimizzare le prestazioni, visto che adesso ci mette circa 5-6 secondi.

Ho da poco (2 giorni) iniziato a smanettare con mysqli, secondo voi potrei migliorare le prestazioni facendo una multi_query su tutto il contenuto del file?

Sono bene accette tutte le possibili soluzioni :)

Grazie


prova con questo script che uso io, funziona molto bene

PHP:
include "connect.php";
$file_content = file('./importa/tabella_1.sql');
$query = "";
foreach($file_content as $sql_line){
  if(trim($sql_line) != "" && strpos($sql_line, "--") === false){
    $query .= $sql_line;
    if (substr(rtrim($query), -1) == ';'){
      $result = mysql_query($query) or die(mysql_error());
      $query = "";
    }
  }
 }
echo "<div>i dati Programma.sql sono stati inseriti </div>";

mysql_close($conn);

Puoi ripetere quest'operazione per ogni file .sql
se invece i file .sql sono tanti ti consiglio questo che ho trovato OTTIMO e anche per grossi file di importazione
Vedi l'allegato bigdump.zip
 
Discussioni simili
Autore Titolo Forum Risposte Data
F Popolare tabella MySQL con i dati di un file .CVS MySQL 1
P Popolare tabella da file .sql PHP 0
elpirata Popolare campi tabella con totali estratti da database PHP 24
V popolare tabella da mysql PHP 7
otto9due Popolare campi tabella excell da maschera access MS Access 0
B Cercare il nome più popolare su una tabella PHP 11
F popolare tendina con dati tabella PHP 4
P Popolare una tabella da utenti: nazione, città, provincia PHP 0
M Popolare una tabella con numero righe e colonne prefissate PHP 6
Monital Popolare tabella con risultati di una query PHP 0
J Popolare tabella con risultati di una query PHP 2
D popolare campi tra th alla select PHP 36
D Popolare array PHP 8
felino Excel: popolare una cella con la data di modifica della riga a cui appartiene Windows e Software 3
F classic asp popolare combo box javascript Presentati al Forum 1
L [MS Access] come popolare automaticamente i campi di una sottomaschera MS Access 8
S Popolare campi di input con metodo $.getJSON jQuery 6
F (Vendo) Spazio Banner - Guest Post a poco prezzo su Blog popolare Vendere e Acquistare pubblicita' online 0
P popolare una select da input PHP 0
pup3770 Popolare random Database - per test MySQL 1
M Popolare menu a tendina in EDIT PHP 18
neo996sps [Laravel 5.1 + ajax] Popolare select concatenate Regioni, Province, Comuni PHP 1
W Popolare select da Jquery jQuery 2
D [Java] Popolare jtable da db Mysql con DefaulTableModel Java 1
L Popolare uitableviewcontroller partendo da uiviewcontroller Sviluppo app per iOS 0
K Popolare select con piu campi in orizzontale PHP 1
K query per popolare una select tramite ajaxc php e xml ! Ajax 14
S [risolto] Aiuto: ciclo php ( for / while). popolare select dinamicamente da array id. PHP 9
A funzione per popolare un drop down list Javascript 4
P Popolare un Database da una mappa di google map PHP 7
S [ACCESS]: Database e interfaccia grafica, popolare caselle dinamicamente MS Access 0
P [Vb.Net] Popolare un List View da database .NET Framework 1
neo996sps [Visual Studio] Popolare datagrid tramite query Visual Basic 0
garrincha Come faccio a far diventare popolare un video su youtube ? Social Media Marketing 3
neo996sps Popolare un array con dati prelevati tramite while PHP 5
L Flash AS3: popolare array di oggetti presenti in libreria Flash 0
T popolare database di una directory Database 1
M Popolare una Listview da database MySql PHP 5
S popolare il database CMS (Content Management System) 4
I Popolare una select da un'altra PHP 3
A popolare simpleConnect da php Flash 0
A popolare simpleConnect da php PHP 0
F popolare array in modo esatto Classic ASP 3
B Popolare combo in base ad un'altra combo Classic ASP 13
peppoweb Popolare un Lista a Tendina Dinamicamente PHP 2
X Popolare una select a selezione multipla?!?! PHP 1
D Miglior modo per estrarre le occorrenze di un elemento in un set di più file xml e quindi scrivere il risultato in una tabella Excel o magari in JSON XML 0
S da casella di testo a campo tabella Database 0
E Tabella righe e colonne PHP 0
G Sviluppo tabella orizzontale in un certo ordine PHP 2

Discussioni simili