|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: Nov 2000
Città: Milano
Messaggi: 210
|
Riempire tabella SQL da file .csv
Salve a tutti.
Dovrei creare una piccola applicazione che mi permetta di riempire alcuni campi di una tabella del mio database con il contenuto del file .csv Nel mio caso ho una tabella che si chiama persona con questi campi: NOME,COGNOME,ETA,SESSO,RESIDENZA Il mio file .csv è costituito da tante righe, in ognuna è definita una persona, e i dettagli sono separati con le virgole. Qualucuno ha fatto una cosa del genere? Oppure qualcuno che sappi come fare ad implementarlo? Grazie. |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Jul 2006
Città: Tristram
Messaggi: 517
|
Quando parlate di DB, conviene sempre specificare cosa state utilizzando.
Se si tratta di Access, l'import te lo fa automaticamente, basta che selezioni la virgola come delimitatore dei campi. Altrimenti puoi comunque passare tramite un semplice programmino che ti spezzetti la stringa in base alle virgole e ti faccia l'insert a db tramite connessione ODBC o altro... Considera che il csv è un semplice file di testo
__________________
Il sole è giallo |
![]() |
![]() |
![]() |
#3 | |
Senior Member
Iscritto dal: Nov 2000
Città: Milano
Messaggi: 210
|
Quote:
Non è che mi potresti aiutare suggerendomi il codice per aprire il file, per spezzettarlo secondo l'apice (') e la virgola (,)? E poi una volta che ho i singoli campi, come faccio a fare l'add nella tabella? |
|
![]() |
![]() |
![]() |
#6 |
Senior Member
Iscritto dal: Sep 2004
Messaggi: 3967
|
ma non ti serve fare tutto questo
![]() Se lavori con C# puoi tranquillamente fare in questo modo: In generale qualsiasi linguaggio SQL ti permette di importare dei valori da file di testo formattati (nel tuo caso come .csv) con una query del tipo: Codice:
//questo in MySql LOAD DATA INFILE 'path_del_tuo_file' INTO TABLE tua_tabella FIELDS TERMINATED BY ',' (campo1, campo2, campo3) //fatto questo nel tuo relativo linguaggio SQL, in C# ti basta trattarlo come stringa: string loadDataFromFile = "LOAD DATA INFILE blablabla "; try { MySqlCommand insertIntoTable = new MySqlCommand(loadDataFromFile, tua_connessione); insertIntoTable.ExecuteNonQuery(); } catch(MySqlException ex) { MessageBox.Show(ex.Message.ToString()); }
__________________
Dai wafer di silicio nasce: LoHacker... il primo biscotto Geek ![]() |
![]() |
![]() |
![]() |
#7 | |
Senior Member
Iscritto dal: Nov 2000
Città: Milano
Messaggi: 210
|
Quote:
ciao grazie per la risposta. ti chiedo però un favore, lasciando stare la connessione con il database, mi servirebbe il codice che si prende il pasto il file .csv e mi crei un txt con un campo per ogni riga. cioè, il mio file csv è così formato: 'nome','cognome','data','città' vorrei che mi scrivesse nel txt in questo formato: nome cognome data città ...ti prego di aiutarmi, mi sta venendo una confusione con questo c#..... grazie Ultima modifica di trunks81 : 15-03-2007 alle 11:53. |
|
![]() |
![]() |
![]() |
#8 | |
Senior Member
Iscritto dal: Sep 2004
Messaggi: 3967
|
Quote:
![]() Ti rimando ad un link dove c'è un piccolo progetto che fa al caso tuo: http://www.codeproject.com/cs/databa...lCSVReader.asp
__________________
Dai wafer di silicio nasce: LoHacker... il primo biscotto Geek ![]() |
|
![]() |
![]() |
![]() |
#9 | |
Senior Member
Iscritto dal: Jul 2006
Città: Tristram
Messaggi: 517
|
Quote:
Ti posto il codice minimale in c, modificatelo con le relative funzioni c# eventualmente Codice:
#include <stdio.h> main() { FILE *fp,*fp2; char c; fp=fopen("fileDiInput.csv","r"); fp2=fopen("destinazione.txt","w"); while ((c=getc(fp))!=EOF) { if (c!=',') putc(c,fp2); else putc("\n",fp2); } fclose(fp); fclose(fp2); }
__________________
Il sole è giallo |
|
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 20:55.