Newsgroup: it.comp.www.php
Titolo: MySql e tabelle pazzerelle

MySql sotto WindowsXp con Apache
Ho creato una mini tabella con nomi di campo comuni, quali:
nome, indirizzo, città, paese, ID
ed ho importato i dati da un file di testo:
LOAD DATA INFILE "G:/PHP/personale.in.txt" INTO TABLE personale;
che ho creato appositamente con i relativi valori. Purtroppo però mi viene
tutto sfalzato, e addirittura alcuni valori scompaiono.
Sapete da cosa può dipendere questo fatto?
Ah, dimenticavo, il file in questione l'ho creato tramite Blocco note ed ho
notato che seppure separi i nomi di campo con un TAB in taluni casi mi si
allontana di un certo spazio, in altri casi di pochissimo, forse di uno
spazio, andando a "incrociarmi" i valori senza alcun apparente ordine. Non
so se mi sono spiegato, provo comunque a riportarvi il testo sotto, se ci
volete dare un'occhiata:
David Tansley Qualche via, 22 Norwich Inghilterra
John Dunn Qualche vicolo, 12/a Mildenhall Inghilterra
Louise Chris Un corso, 22 New York USA
Lorry Hellman La strada, 29 Los Angeles USA
Pauline Neave Qualche piazza, 69 Dereham Inghilterra
Peter Jones Circonvallazione, 11 New York USA
Considerate che adesso mi ha cambiato la formattazione, ma se tra un campo e
l'altro davo un carattere tabulazione mi si ingarbugliava ogni cosa, forse è
questo il problema, ma allora come posso ricolverlo se devo usare il TAB?
ciao
Dan

Dimenticavo una cosa importante e cioè che quando carico i dati del file
nella tabella mi da 7 WARNINGS.
Non c'è il modo di vedere il contenuto di questi WARNINGS per capirci
qualche cosa di +?
Dan

spazio, andando a "incrociarmi" i valori senza alcun apparente ordine. 
Qualche suggerimento.
Importando da un file di testo, MySQL assume che di default i campi
siano separati da un tab e i record da un a capo (da un '\n': vedi
sotto).
Quando importi da un file di testo devi però essere sicuro che siano
previsti tutti i campi della tabella, anche se vuoti.
Un esempio. Se la tabella è:
id nome  citta  nascita
1  maria roma   1970/12/01
2  piero        1975/01/31
3  mario pisa
il textfile deve essere:
1 -> maria -> roma -> 1970/12/01
2 -> piero ->-> 1975/01/31
3 -> mario -> pisa ->
(dove i -> stanno per un tab). Come vedi ci sono tab anche per i campi
senza valore
(N.B.: se vuoi che un campo abbia valore NULL, devi usare \N. Un campo
vuoto e un campo con valore NULL non sono la stessa cosa).
Quanto al problema di Blocco note cui ti riferisci, questo dipende
solo dalla visualizzazione. Infatti in Blocco note un tab corrisponde
mi sembra a 8 caratteri. Quindi se hai una parola di 9 caratteri e una
di 6, nel primo caso, il tab ti porterà al carattere 16° (non potendo
andare all'8°!), nel secondo al carattere 8°:
9caratter       il tab porta qui
seicar  il tab porta qui
In realtà però in entambi i casi ci sarà solo un tab tra le due parole
e questo è importante. Se tu cerchi di allinearle, dovrai mettere due
tab nella seconda riga, ma poi caricando in MySQL, il programma
interpreterà i due tab come riferentisi a tre campi, di cui il secondo
vuoto!
Personalmente, in molti casi ho risolto i miei problemi inserendo i
dati in un foglio Excel. Poi selezioni tutto, copi e incolli in un
editor di testo: le diverse celle di Excel vengono separate con un
tabulatore.
Devo anche dire che usando l'interfaccia a linea di comando con la ver
di MySQL che ho sotto mano (3.23.43), fa un po' di casino con i file.
Infatti se uso un file di testo normale (DOS) si incasina con gli
acapo, mentre va tutto liscio se col mio fighissimo UltraEdit
sostituisco gli acapo ("\p") con degli "\n" (che dovrebbe
corrispondere agli a capo in Linux).
Spero di averti aiutato e non incasinato.
Ciao
Matteo

 Matteo
Mi hai molto aiutato, l'unica cosa che ancora non mi è chiara è se devo
porre uno \n al termine della riga nel file di testo e poi proseguire a
scrivere oppure se lo \n deve comunque essere seguito da un invio(per
ottenere un a capo all'interno dello stesso editor) o che altro. Comunque
adesso le provo tutte.
Fammi sapere quando puoi.
ciao
Dan

Giustappunto per evitare di aprire un programma più pesante quale Excel.
Excel comunque ti permette di sistemarti tutti i dati ben benino, di
controllare che siano a posto, ognuno nella sua casellina, notando a
colpo d'occhio eventuali errori (un testo dove andava una data ad es).
Inoltre puoi ordinarli, contarli, eccetera eccetera. Come preparazione
dei dati la trovo utile.
Ciao
Matteo

 cercando Editor di testo.
Infatti, l'ho già scaricato e  provato me è in versione di prova, comunque a
questo punto mi può andare bene anche Excel, anche se con quest'ultimo
comunque sono costretto a fare una serie di passaggi di intermezzo.
Notavo, tra l'altro, che quando copio i dati da Excel a Wordpad quest'ultimo
mi visualizza una sorta di tabella e una volta che salvo il file da RTF a
TXT, nonostante mi avvisi della perdita di formattazione la tabella rimane
ed i dati caricati nella tabella di MySql vengono visualizzati bene, tra
l'altro senza alcun warning nella fase di LOAD. Se invece scrivo i dati su
wordpad e dò accapo e li carico me li visualizza sempre tutti sfalzati, con
una serie di warning...
Non so, ma al momento mi pare che l'unica soluzione sia di continuare la
trafila Excel Wordpad Mysql.
Comunque se tu non mi suggerivi Excel ero sempre qui ad arrovellarmi per
risolvere questo problema, un problema anche non da poco...
ciao
 grazie di tutto
Dan