Domanda

Sto cercando di importare un file .csv in una tabella MySQL tramite phpMyAdmin .

Il file .csv è separato da pipe, formate in questo modo:

data|d'ata|d'a"ta|dat"a|
data|"da"ta|data|da't'a|
dat'a|data|da"ta"|da'ta|

I dati contengono virgolette. Non ho alcun controllo sul formato in cui ricevo i dati: sono generati da una terza parte.

Il problema si presenta quando è presente un | seguito da una doppia citazione . Ottengo sempre un & Quot; conteggio campi non valido nell'input CSV sulla riga N & Quot; di errore.

Sto caricando il file dalla pagina di importazione, usando Latin1, CSV, terminato da |, separato da " ;.

Vorrei solo modificare il " racchiuso tra " carattere , ma continuo a ricevere " Parametro non valido per l'importazione CSV: campi racchiusi tra " . Ho provato vari personaggi senza successo.

Come posso dire a MySQL di accettare questo formato in phpMyAdmin?

L'impostazione di queste tabelle è il primo passo nella scrittura di un programma che utilizzerà i file .csv caricati con gzip per mantenere il catalogo di un sito di e-commerce.

È stato utile?

Soluzione

Ho avuto un problema simile nelle ultime ore e ho finalmente ottenuto un'importazione funzionante, quindi condividerò la mia soluzione, anche se potrebbe non aiutare il poster originale.

Versione breve:
1.) se un file Excel, salva come formato ODS (foglio di calcolo aperto). 1a.) Se il file è una sorta di formato di testo con delimitatori (come nel caso del poster originale), allora apri Excel e una volta dentro Excel usa File / Apri per aprire il file. Lì sarai in grado di selezionare il delimitatore appropriato per visualizzare il file. Assicurati che il file sia corretto, quindi salva come formato ODS (e chiudi il file).

2.) Apri il file in OpenOffice Calc (download gratuito da Oracle / Sun). 2a.) Premi Ctrl-F per aprire la finestra di dialogo Trova. Fai clic su Altre opzioni e assicurati che & Quot; Solo selezione corrente & Quot; NON è verificato. 2b.) Cerca le doppie virgolette. Se non ce ne sono nel tuo file, puoi saltare i passaggi 4 e 5.
3.) Salva con nome - & Gt; Testo CSV. Seleziona le opzioni per il formato UTF-8 (premi & Quot; u & Quot; 3 volte per arrivarci velocemente), seleziona & Quot ;; & Quot; (punto e virgola) come separatore e seleziona virgolette doppie per il testo. 4.) Se sono state trovate doppie virgolette nel tuo file nel passaggio 2b, continua, altrimenti importa semplicemente il file come CSV con phpMyAdmin (vedi passaggio 6). Dovrebbe funzionare. 5a.) Apri in Word o qualsiasi altro editor di testo in cui puoi fare Trova - & Gt; Sostituisci tutto.
5b.) Trova tutte le istanze di tre virgolette doppie in una riga cercando & Quot; & Quot; & Quot; (se ne trovi, potresti anche cercare 4, 5, 6 ecc. di seguito fino a quando non ti trovi vuoto). 5c.) Sostituire & Quot; & Quot; & Quot; con un segnaposto che non si trova da nessun'altra parte nel tuo CSV. Li ho sostituiti con "abcdefg". 5d.) Trova - & Gt; Sostituisci tutte le istanze di & Quot; & Quot; (due virgolette doppie di fila) con \ " (barra e virgolette doppie). 5e.) Trova - & Gt; Sostituisci tutte le istanze di abcdefg (o il segnaposto scelto dal passaggio 5c) con \ & Quot; & Quot ;. 5c e questo passaggio assicurano che tutte le virgolette che si verificano alla fine di un campo appena prima della virgoletta di delimitazione del testo siano correttamente "salvate". 5f.) Infine, salva il file, conservandolo in UTF-8 (o in qualsiasi formato sia necessario per l'importazione). 6.a) In phpMyAdmin, fare clic sul & Quot; import & Quot; scheda, fare clic sul " scegliere il file " e seleziona il file che hai appena salvato. 6b.) In "Formato del file importato" CSV deve essere selezionato. Se i nomi delle colonne sono nella prima riga, assicurarsi che la casella di controllo sia selezionata. Soprattutto, è necessario impostare su "Campi chiusi da"; (punto e virgola), "Campi racchiusi da" deve essere impostato su " (virgolette doppie) e "Campi sfuggiti a" devono essere impostati su \ (barra). È possibile configurarlo nel file seguendo il passaggio 3 e, se necessario, seguendo i passaggi 5a - 5f.

7.) Fare clic su " Vai " e prega che non hai perso solo un'altra ora.

Ora che la versione corta è risultata così lunga, salterò la versione lunga.

Basti dire che sembrano esserci 2 problemi principali con l'importazione tramite phpmyadmin. 1.) Esiste un tipo di problema di memoria che impedisce l'importazione di file Excel e ODS di grandi dimensioni (quanto è grande? Non ancora sicuro). 2.) Né OpenOffice né Excel sembrano salvare i loro file CSV in modo compatibile con phpmyadmin. Vogliono sfuggire alle doppie virgolette con le doppie virgolette. phpMyAdmin vuole che le doppie virgolette sfuggano a qualcos'altro, come la barra.

Si spera che il primo problema venga risolto in un aggiornamento di phpmyadmin (e / o del componente aggiuntivo di importazione Excel 'PHPExcel'). Il secondo potrebbe essere risolto se ci fosse un modo semplice per cambiare il carattere di escape per i file Excel o ODS salvati come CSV, o se phpMyAdmin potrebbe essere reso compatibile con il loro formato (che in realtà dovrebbe essere abbastanza facile. Basta farlo funzionare allo stesso modo azioni di ricerca e sostituzione che abbiamo eseguito manualmente sopra per evitare il problema della doppia virgoletta).

Spero che questo aiuti qualcuno,mentre ho trascorso 3-4 ore a scoprire questa soluzione e un'altra ora a scriverla qui. Spero non sia troppo lungo, ma speravo di aiutare le persone a tutti i livelli di competenza da zero a ovunque io sia (probabilmente intorno allo 0.1).

Altri suggerimenti

Ho trovato un hack che funziona: uso $ come &; racchiuso tra " carattere e tutto va bene. Dal momento che questo è per un sito europeo, so che non lo useranno mai nel contenuto della tabella.

potresti modificare i file CSV aggiungendo un \ davanti a ogni 'giusto?

Hai provato a cancellare le caselle che indicano " I campi racchiusi tra " e " Campi sfuggiti a " ;? Non ho usato phpMyAdmin, ma Google suggerisce altri hanno avuto successo con questo metodo .

Potresti considerare di scrivere il tuo LOAD DATA INFILE , sembra che tu ne abbia bisogno comunque poiché questo processo farà parte di un'applicazione ad un certo punto.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top