Creazione di un UNICA tabella da più file .CSV

spider81man

Utente Attivo
7 Lug 2018
25
0
1
Roma
Buongiorno a tutti,
ho creato questa pagina PHP che mi serve PRINCIPALMENTE per caricare, all'interno di una Tabella MySql con il comando LOAD DATA INFILE, i dati contenuti in diversi file ".csv".
Ho fatto in modo tale che ogni file CSV avesse un numero UNIVOCO, in modo tale da sapere da quale CSV veniva il dato, la query SQL funziona perfettamente MA anziché aggiungere i dati me li sovrascrive, difatti mi trvo solo gli ultimi dati e non quelli precedenti.

Codice:
<?php

set_time_limit(0);


$servername = "localhost";
$username = "root";
$password = "";
$dbname = "unico";

// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);

// Check connection
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}
$Cod_Cliente=-1;
                    // sql to create table
                    $sql = "CREATE TABLE DB_Unico (
                        `Cod_Cliente`  int(6) NOT NULL,
                        `phone`  varchar(30)  NOT NULL,
                        `email`  varchar(30) NOT NULL,
                        `nome` varchar(30) NOT NULL,
                        `cognome` varchar(30) NOT NULL,
                    )";
            

            if ($conn->query($sql) === TRUE) {
                echo "Table DB_Unico created successfully <br>";
            } else {
                echo "Error creating table DB_Unico: " . $conn->error . "<br>";
            }

//    lettura dei files della cartella dove risiede il file con lo script
$dir = 'C:\Users\XXX\Desktop\clienti';

if (is_dir($dir)) {
    if ($dh = opendir($dir)) {
        while (($file = readdir($dh)) !== false) {   // questo è un ciclo che si ripete fin tanto che non è stato letto tutto il contenuto della cartella
            $nometabella = pathinfo($file, PATHINFO_FILENAME);

            $sql2 = "LOAD DATA INFILE '$file' INTO TABLE DB_Unico FIELDS TERMINATED by ',' LINES TERMINATED BY '\r\n'
            IGNORE 1 LINES  (phone, email, nome, cognome)";
                            
            if ($conn->query($sql2) === TRUE) {
                echo "Table DB_Unico popoleted successfully with  $nometabella with code  $Cod_Cliente <br>";
            } else {
                    echo "Error popoleted table DB_Unico: " . $conn->error . "<br>";
            }

            $sql3 = "UPDATE `DB_Unico` SET `Cod_Cliente`=$Cod_Cliente";
            if ($conn->query($sql3) === TRUE) {
                echo "Table DB_Unico Set Code $Cod_Cliente successfully at $nometabella <br>";
            } else {
                    echo "Error Set Code table DB_Unico: " . $conn->error . "<br>";
            }
            $Cod_Cliente++;
        }
                closedir($dh);
        
    }
}
$conn->close();
?>

Il codice funziona ma i dati vengono sovrascritti, di fatti io ho 5 file CSV e trovo i dati solo dell'ultimo file in ordine alfabetico, gli altri dati sono sovrascritti in quanto l'output a video mi dice che sono stati creati.
Prima che me lo chiediate la Variabile "$Cod_Cliente" è settata a -1 all'inizio perchè il sistema prende anche "." e ".." altrimenti verebbe tutto sfalzato di 2 in avanti.
Sapete dirmi come mai mi prende e mi sovrascrive anzichè aggiungere in maniere automatica?
Sapete dirmi come mai??
Grazie
 

marino51

Utente Attivo
28 Feb 2013
3.076
197
63
Lombardia
Prima che me lo chiediate la Variabile "$Cod_Cliente" è settata a -1 all'inizio perchè il sistema prende anche "." e ".." altrimenti verebbe tutto sfalzato di 2 in avanti.

1) in realtà vengono letti e trattati i "file" "." e "..", il log che segue lo evidenzia
Codice:
-1 - . -
-1 - LOAD DATA INFILE '.' INTO TABLE DB_Unico FIELDS TERMINATED by ',' LINES TERMINATED BY ' 'IGNORE 1 LINES (phone, email, nome, cognome)
Table DB_Unico popoleted successfully with with code -1
-1 - UPDATE `DB_Unico` SET `Cod_Cliente`=-1
Table DB_Unico Set Code -1 successfully at

0 - .. - .
0 - LOAD DATA INFILE '..' INTO TABLE DB_Unico FIELDS TERMINATED by ',' LINES TERMINATED BY ' 'IGNORE 1 LINES (phone, email, nome, cognome)
Table DB_Unico popoleted successfully with . with code 0
0 - UPDATE `DB_Unico` SET `Cod_Cliente`=0
Table DB_Unico Set Code 0 successfully at .

1 - FILE_1.csv - FILE_1
1 - LOAD DATA INFILE 'FILE_1.csv' INTO TABLE DB_Unico FIELDS TERMINATED by ',' LINES TERMINATED BY ' 'IGNORE 1 LINES (phone, email, nome, cognome)
Table DB_Unico popoleted successfully with FILE_1 with code 1
1 - UPDATE `DB_Unico` SET `Cod_Cliente`=1
Table DB_Unico Set Code 1 successfully at FILE_1
ti suggerisci di controllare e scartare questi due file,
potresti poi mettere a zero l'indice cliente e incrementarlo prima del suo uso
meglio avere tutto chiaro e sotto controllo


2) quando aggiorni il cliente nel database, lo fai senza nessun "riguardo"
ovvero, tutto ciò che é presente in quel momento, viene aggiornato con il cliente del momento
SQL:
UPDATE `DB_Unico` SET `Cod_Cliente`=4
dovresti mettere una clausola where per isolare i soli records ultimi caricati
 
Discussioni simili
Autore Titolo Forum Risposte Data
F NetBeans problema creazione progetto Java Windows e Software 0
A Creazione cookie e gestione accessi PHP 0
D Creazione sito e-commerce WP CMS (Content Management System) 0
A Consiglio per creazione sito web CMS (Content Management System) 1
S CREAZIONE DI SITO PER CORSI DI FORMAZIONE WordPress 3
M Creazione menu a tendina Javascript 3
S Download di un file in automatico dopo la sua creazione PHP 2
G creazione menu a tendina e invio a pagina php PHP 1
M Problemi con creazione maschere Presentati al Forum 1
F Creazione script Tv Presentati al Forum 1
W Creazione Cartella Classic ASP 2
A recuperare data creazione di un file PHP 6
D Neofita. Creazione applicativo prenotazione automezzi Offerte e Richieste di Lavoro e/o Collaborazione 12
L Aiuto creazione menu mancante WordPress 0
E Creazione URL per chat whatsapp WordPress 1
L Creazione di 2 o più record PHP 6
W Creazione di una griglia HTML e CSS 1
E Creazione di un sito di news PHP 16
S Scelta software/cms per creazione sito Webdesign e Grafica 6
E Creazione gestionale timesheet partendo da foglio excel Offerte e Richieste di Lavoro e/o Collaborazione 0
M Creazione notifica sonora Javascript 1
R Creazione sito eccomerce privato. Offerte e Richieste di Lavoro e/o Collaborazione 2
I Creazione programmino JAVA Offerte e Richieste di Lavoro e/o Collaborazione 0
D Difficile creazione excel di dati di grandi dimensioni Classic ASP 2
I creazione stile css HTML e CSS 3
A [Offro][retribuito] Creazione siti web/ web app (Django) Offerte e Richieste di Lavoro e/o Collaborazione 2
Stefano Migotto Creazione di un div con php o js PHP 9
G [OFFRO][RETRIBUITO] Creazione siti web e loghi professionali Offerte e Richieste di Lavoro e/o Collaborazione 0
D Creazione sito Offerte e Richieste di Lavoro e/o Collaborazione 0
D CREAZIONE E GESTIONE SITO E-COMMERCE Offerte e Richieste di Lavoro e/o Collaborazione 2
C [WordPress] Retribuzione creazione Sito Web vetrina Discussioni Varie 3
I [Javascript] Creazione di una piccola libreria e integrazione in angular Javascript 2
S [OFFRO] Creazione di programmi per la modifica automatizzata di testi Offerte e Richieste di Lavoro e/o Collaborazione 0
T [php] problema creazione query select-where PHP 5
Daniele_Carrara [PHP] Creazione Carrello PHP 1
G Creazione Landing Page Offerte e Richieste di Lavoro e/o Collaborazione 2
P [HTML] Creazione pagina web da dove iniziare HTML e CSS 2
L Creazione form html HTML e CSS 3
Monital [PHP]Far riconoscere stringa o numerico epr creazione campo tabella PHP 6
W [PHP] Creazione classe PDO PHP 4
K [PHP] Creazione di Calendario con orario PHP 4
V [CREO] Creazione profilo INSTAGRAM ad hoc per SVILUPPO MARKETING aziendale Offerte e Richieste di Lavoro e/o Collaborazione 0
Store creazione campo search in php PHP 1
Store creazione barra search sito web Presentati al Forum 3
C Creazione di una funzione per il filtraggio dei campi di un db Presentati al Forum 0
F Info aws ed ec2 per creazione sito vendita orodotti digitali Server Dedicati e VPS 0
S [PHP] Aiuto creazione form php per completamento modello word PHP 1
Web93 Creazione spedizione a pezzo - sito wordpress woocommerce WordPress 2
W Creazione Wallet per Bitcoin Offerte e Richieste di Lavoro e/o Collaborazione 6
A [PHP] Creazione tabelle dinamiche PHP 16

Discussioni simili