Buonasera,
dopo svariati anni sono di nuovo alla prese con i database e purtroppo ricordo quasi nulla di quel poco che sapevo. Oltre a PHP 7.4, utilizzo phpMyAdmin e MariaDB (ho solo questo database sul NAS).
Vengo subito al dunque...
Devo caricare il contenuto di un file CSV in una tabella del database (sono circa 65.000 righe per 18 colonne). Ho creato la tabella nel database con le 18 colonne (ho impostato VARCHAR 255 a tutte). Poi ho inserito la 19� colonna che ho chiamato 'id' (INT 10) con chiave primaria ed auto incremento.
Utilizzo questo codice trovato in rete per caricare il contenuto del file:
codice:
$cons = mysqli_connect("$sqlname", "$username","$password","$db") or die (mysql_error());
$result1 = mysqli_query($cons,"select count(*) count from $table");
$r1 = mysqli_fetch_array($result1);
$count1 = (int)$r1['count'];
mysqli_query($cons, '
LOAD DATA LOCAL INFILE "'.$file.'"
INTO TABLE '.$table.'
FIELDS TERMINATED by \';\'
LINES TERMINATED BY \'\n\'
')or die(mysql_error());
$result2=mysqli_query($cons,"select count(*) count from $table");
$r2=mysqli_fetch_array($result2);
$count2=(int)$r2['count'];
$count = $count2-$count1;
if ($count>0) {
echo "Success";
echo "<b> total $count records have been added to the table $table </b> ";
} else {
echo "Mysql Server address/Host name ,Username , Database name ,Table name , File name are the Mandatory Fields";
}
Il risultato � positivo, ma ho 2 problemi.
1) alcuni campi mi risultano non incolonnati in modo corretto rispetto al file CSV e suppongo perch� in quest'ultimo 'possono essere anche vuoti'. Infatti le prime colonne si trovano tutte perch� sono campi che non possono essere vuote (tipo cognome, nome, codice fiscale, ecc). Comunque sia non so come risolvere;
2) il file csv ha 62054 righe, il messaggio stampato a video mi dice che sono stati inseriti 56389 record, mentre in phpMyAdmin l'auto increment � arrivato a 54531
Insomma di sicuro mi son perso qualche pezzo per strada.