Navigazione

    Privacy - Termini e condizioni
    © 2020 Search On Media Group S.r.l.
    • Registrati
    • Accedi
    • CATEGORIES
    • Discussioni
    • Non letti
    • Recenti
    • Hashtags
    • Popolare
    • Utenti
    • Stream
    • Interest
    • Categories
    1. Home
    2. Categorie
    3. Coding e Sistemistica
    4. Coding
    5. LOAD DATA INFILE e doppi apici
    Questa discussione è stata cancellata. Solo gli utenti con diritti di gestione possono vederla.
    • G
      gorka Super User • 27 ago 2007, 09:42 ultima modifica di

      LOAD DATA INFILE e doppi apici

      Con la funzione LOAD DATA INFILE lanciata da PHP sono riuscito a copiare velocemente il contenuto di un csv nel DB.
      Il problema è che tutti i campi vengono copiati con i doppi apici, c'è un modo per evitarlo? Grazie

      0 Miglior Risposta Ringrazia Cita Rispondi

        1 Risposta Ultima Risposta
        Caricamento altri post
        Rispondi
        • Topic risposta
        Effettua l'accesso per rispondere
        • Da Vecchi a Nuovi
        • Da Nuovi a Vecchi
        • Più Voti
         

      • S
        sups User Attivo • 27 ago 2007, 17:53 ultima modifica di

        Come hai strutturato la query sql?

        Struttura tipica:

        
        LOAD DATA INFILE 'file.csv'
        INTO TABLE tabella
        FIELDS
            TERMINATED BY ','
            OPTIONALLY ENCLOSED BY '"'
        LINES
            TERMINATED BY '\r\n'
        
        

        Ciao :ciauz:

        0 Miglior Risposta Ringrazia Cita Rispondi

          1 Risposta Ultima Risposta
        • G
          gorka Super User • 27 ago 2007, 18:08 ultima modifica di
          LOAD DATA INFILE '".$file."' IGNORE INTO TABLE $tabella FIELDS TERMINATED BY ';'  LINES TERMINATED BY '\\n' IGNORE 1 LINES
          

          Mi consigli di aggiungere \r in LINES TERMINATED?

          0 Miglior Risposta Ringrazia Cita Rispondi

            1 Risposta Ultima Risposta
          • S
            sups User Attivo • 27 ago 2007, 18:37 ultima modifica di

            Nel linguaggio C o C++ utilizzare "\n" oppure "\r\n" non cambia, più che altro è una forzatura per evitare problemi.
            \r che significa "carriage return", obbliga a tornare all'inizio della linea, mentre \n che significa "newline", indica l'andata a capo.
            Quindi con "\r\n" si obbliga al parser a leggere la successiva nuova linea dal carattere iniziale.
            In base all'editor di testo ed il SO utilizzato, "\n" si comporta in modo diverso, quindi conviene utilizzare "\r\n".
            Infine bisogna stare attenti alla codifica con cui viene salvato il file, sempre meglio utilizzare quelle standard come ANSI.

            0 Miglior Risposta Ringrazia Cita Rispondi

              1 Risposta Ultima Risposta
            • S
              sups User Attivo • 27 ago 2007, 18:40 ultima modifica di

              Potresti postare anche un esempio di come hai strutturato il file CSV

              0 Miglior Risposta Ringrazia Cita Rispondi

                1 Risposta Ultima Risposta
              • G
                gorka Super User • 27 ago 2007, 18:42 ultima modifica di

                Non si tratta di un file specifico, ma devo riuscire a "digerire" la qualunque.
                Cmq il mio problema è eliminare i doppi apici in fase di acquisizione, quindi "valore" dovrebbe essere memorizzato come valore (senza apici, appunto).

                0 Miglior Risposta Ringrazia Cita Rispondi

                  1 Risposta Ultima Risposta
                • S
                  sups User Attivo • 28 ago 2007, 14:26 ultima modifica di

                  Ho fatto dei test, non mi da' problemi di virgolette.
                  Non è per caso che i campi della tabelle siano incompatibili con il flusso dati generato dalla query e, per risolvere le divergenze, vengano inserite le virgolette ad ogni valore, una sorta di conversione, esempio per trasformare un valore testo in stringa.

                  Se vuoi posta la query che hai utilizzato per strutturare la tabella.
                  Nei test, ho utilizzato solo campi di tipo VARCHAR.

                  Ciao :ciauz:

                  0 Miglior Risposta Ringrazia Cita Rispondi

                    1 Risposta Ultima Risposta
                  • G
                    gorka Super User • 28 ago 2007, 14:54 ultima modifica di

                    Appena risolto 🙂

                    Dovevo aggiungere

                    ENCLOSED BY '\"'
                    ```Lo avevo aggiunto già prima ma sicuramente avevo fatto casini con backslash :x e non funzionava.
                    
                    Grazie a tutti per la collaborazione :ciauz:
                    
                    EDIT: Consiglio a tutti di utilizzare questa funzione di MySQL per caricare i csv nel DB, è molto più veloce che parserizzare il file in PHP e poi effettuare l'inserimento (pochi secondi anche per file di 14 mb).
                    0 Miglior Risposta Ringrazia Cita Rispondi

                      1 Risposta Ultima Risposta
                    Caricamento altri post
                    Rispondi
                    • Topic risposta
                    Effettua l'accesso per rispondere
                    • Da Vecchi a Nuovi
                    • Da Nuovi a Vecchi
                    • Più Voti