Caricare file CSV da PHP modificando i caratteri

di il
15 risposte

Caricare file CSV da PHP modificando i caratteri

Buonasera a tutti signori,
ho un file da quasi 2GB in formato csv, il file in questione è cosi creato:

Nome Cognome email tel
'Franco' 'Rossi' '' '393313334443'
'Mario' 'bianchi' '' '393313334444'

Ho sempre caricato nel DB i file CSV con questa funzione SQL

LOAD DATA INFILE 'xxx.csv' INTO TABLE XXX FIELDS TERMINATED by ',' LINES TERMINATED BY '\n'

Ho, già caricato così il DB, ed ora lo dovrò ricaricare, ma cosi facendo mi trovo tutti i dati tra '', come posso fare per evitarlo?
Grazie

15 Risposte

  • Re: Caricare file CSV da PHP modificando i caratteri

    spider81man ha scritto:


    Ho sempre caricato nel DB i file CSV con questa funzione SQL
    LOAD DATA INFILE 'xxx.csv' INTO TABLE XXX FIELDS TERMINATED by ',' LINES TERMINATED BY '\n'
    Ho, già caricato così il DB, ed ora lo dovrò ricaricare, ma cosi facendo mi trovo tutti i dati tra '', come posso fare per evitarlo?
    A giudicare dalla documentazione in linea, direi che basta aggiungere la clausola ENCLOSED BY specificando il carattere che racchiude il valore dei campi, ossia l'apostrofo (o apice singolo).

    Inseriscilo nell'istruzione e fai una prova.

    Ciao!
  • Re: Caricare file CSV da PHP modificando i caratteri

    Alka ha scritto:


    spider81man ha scritto:


    Ho sempre caricato nel DB i file CSV con questa funzione SQL
    LOAD DATA INFILE 'xxx.csv' INTO TABLE XXX FIELDS TERMINATED by ',' LINES TERMINATED BY '\n'
    Ho, già caricato così il DB, ed ora lo dovrò ricaricare, ma cosi facendo mi trovo tutti i dati tra '', come posso fare per evitarlo?
    A giudicare dalla documentazione in linea, direi che basta aggiungere la clausola ENCLOSED BY specificando il carattere che racchiude il valore dei campi, ossia l'apostrofo (o apice singolo).

    Inseriscilo nell'istruzione e fai una prova.

    Ciao!
    Usando ENCLOSE '''' ho paura che poi, i cognomi con l'apostrofo, mi vengano tagliati. cmq grazie
  • Re: Caricare file CSV da PHP modificando i caratteri

    spider81man ha scritto:


    Usando ENCLOSE '''' ho paura che poi, i cognomi con l'apostrofo, mi vengano tagliati. cmq grazie
    Quando si parla di programmazione, la paura non c'entra nulla: se hai questo timore, crea un file di prova e verifica se è così.
  • Re: Caricare file CSV da PHP modificando i caratteri

    Ho fatto cosi

    LOAD DATA INFILE 'xxx.csv'
    INTO TABLE VK2
    FIELDS TERMINATED BY ','
    ENCLOSED BY '"'
    LINES TERMINATED BY '\n'
    IGNORE 1 ROWS

    ma niente, mi da sempre sti cavolo di APICI!!!
    poi mi da questo errore se lancio l'sql da "PHPMYADMIN"

    Warning: #1265 Data truncated for column 'first_name' at row 6
  • Re: Caricare file CSV da PHP modificando i caratteri

    Ti occorre caricare il giusto risultato tramite phpMyAdmin? Se non necessario a volte una stringa va creata con sequenza di escape.
    [CODE]$stringa_apice_singolo_php = 'LOAD DATA INFILE \'xxx.csv\' INTO TABLE VK2 FIELDS TERMINATED BY \',\' ENCLOSED BY "\'" LINES TERMINATED BY \'\\n\';'; var_dump($stringa_apice_singolo_php); Mysql deve essere abilitato per usare gli apici doppi, altrimenti in testo normale prova ENCLOSED BY '''' o ENCLOSED BY '\''. In testo tramite codice php si aggiunge l'escape.
  • Re: Caricare file CSV da PHP modificando i caratteri

    Guarda io vorrei caricare il dato nel DB direttamente senza gli apici (') ma anche se metto ENCLOSED BY "\'" i dati, una volta caricati nel DB, li hanno sempre e cmq.
    Non riesco a capire come mai.
    BAH
  • Re: Caricare file CSV da PHP modificando i caratteri

    Se delimita tramite apici doppi non deve usare escape per il carattere apice singolo.
    Come scritto sopra copia la prima sintassi delimitata da apici singoli (se delimitata da apici singoli e altri due apici singoli ove il precedente funziona da escape, 2+2=4 apici singoli), solo come alternativa delimitata da apici singoli '\''.

    Mentre delimitata con apici doppi "'".
    Delimita significa iniziare e finire con lo stesso carattere il che rappresenta una stringa.
  • Re: Caricare file CSV da PHP modificando i caratteri

    Hormus ha scritto:


    Se delimita tramite apici doppi non deve usare escape per il carattere apice singolo.
    Come scritto sopra copia la prima sintassi delimitata da apici singoli (se delimitata da apici singoli e altri due apici singoli ove il precedente funziona da escape, 2+2=4 apici singoli), solo come alternativa delimitata da apici singoli '\''.

    Mentre delimitata con apici doppi "'".
    Delimita significa iniziare e finire con lo stesso carattere il che rappresenta una stringa.
    Guarda ho provato anche così
    LOAD DATA INFILE "xxx.csv"
    INTO TABLE VK
    FIELDS TERMINATED BY ","
    ENCLOSED BY "\'"
    LINES TERMINATED BY "\n\"
    IGNORE 1 LINES';
    
    Ma niente, i dati vengono sempre messi tra gli APICI e non capisco come mai. Poi anche se dopo che li ho caricati lancio il comando da SQL


    Update vk set first_name = TRIM(BOTH ',' FROM first_name)

    Niente, mi elimina SOLO l'ultimo apice.+
    BOH
  • Re: Caricare file CSV da PHP modificando i caratteri

    Hai provato nel modo errato [CODE]LOAD DATA INFILE "xxx.csv" INTO TABLE VK FIELDS TERMINATED BY "," ENCLOSED BY "'" LINES TERMINATED BY "\n" IGNORE 1 LINES; o ENCLOSED BY '''' o ENCLOSED BY '\''
  • Re: Caricare file CSV da PHP modificando i caratteri

    Hormus ha scritto:


    Hai provato nel modo errato [CODE]LOAD DATA INFILE "xxx.csv" INTO TABLE VK FIELDS TERMINATED BY "," ENCLOSED BY "'" LINES TERMINATED BY "\n\" IGNORE 1 LINES'; o ENCLOSED BY '''' o ENCLOSED BY '\''
    In entrambi i modi
  • Re: Caricare file CSV da PHP modificando i caratteri

    Puoi creare un nuovo listanomi.csv con questi contenuti: [Code]'lorenzo','de ambrosis','mail1@tin.it','10-01-2017' 'marco','bianchi','mail2@tin.it','11-01-2017' 'luca','verdi','mail3@tin.it','12-01-2017' 'andrea','rossi','mail4@tin.it','13-01-2017' Poi l'istruzione SQL:
    Dapprima crea la tabella tabtest con 4 campi VARCHAR e NULL [CODE]LOAD DATA INFILE "listanomi.csv" INTO TABLE tabtest FIELDS TERMINATED BY "," ENCLOSED BY "'" LINES TERMINATED BY "\n" IGNORE 1 LINES;
  • Re: Caricare file CSV da PHP modificando i caratteri

    Non mi carica tutti i dati,
    mi da la prima e la terza riga come vedi

  • Re: Caricare file CSV da PHP modificando i caratteri

    In realtà il 4 campo phone unisce tra la terminazione del fine riga.

    Sostituisci nell'istruzione SQL \n in \r\n se non funziona in \r
  • Re: Caricare file CSV da PHP modificando i caratteri

    Hormus ha scritto:


    In realtà il 4 campo phone unisce tra la terminazione del fine riga.

    Sostituisci nell'istruzione SQL \n in \r\n se non funziona in \r
    Così è andata bena che se mi ha lasciato il primorigo tra apicetti ('lorenzo').
    però. con il file che ho io, si hanno sempre gli stessi problemi, tutti i campi tra apici.
Devi accedere o registrarti per scrivere nel forum
15 risposte