J'ai vu des questions similaires ( 1 , ), mais aucun d'entre eux ne discutent d'insérer des fichiers CSV dans SQLite. À propos de la seule chose que je pouvais penser à faire est d'utiliser un Le seul dataDapter pour les fichiers CSV que j'ai trouvés n'est pas réellement disponible: p> écrire sur un fichier CSV: p> J'ai trouvé le code ci-dessus @ http: // dévidéligence. COM / 2005/02 / dataDapter-for-csv-fichiers / Est-ce que quelqu'un sache où je peux obtenir un csvdatadapter code> et remplir le
sqliitetaaset code>, puis utilisez le
sqliitetaaset code> pour mettre à jour les tables dans le Base de données:
Le CSVDataAdapter code> était censé venir avec SDF de OpenNetCF A>, mais cela ne semble plus être disponible. p>
CSVDataAdapter code>? Peut-être que quelqu'un connaît la chose beaucoup plus simple: comment faire des inserts en vrac de fichiers CSV dans SQLite ... Votre aide serait grandement appréciée! P> P>
5 Réponses :
Vous pouvez utiliser n'importe lequel d'un certain nombre d'outils pour migrer des données à partir d'un fichier .csv vers une base de données, y compris: p>
Remarque: la première et la troisième solution nécessite que vous accédez au fichier .csv via une interface JDBC. P>
Tous ces éléments vous permettront de modifier le processus de migration dans une certaine mesure (par exemple, la taille du lot) et tous supposent que vous souhaitez effectuer la migration manuellement, plutôt que de l'exécution du code C # (qui compliquerait un peu les choses). p>
Wbcopy est la mauvaise commande lors de l'utilisation de SQL Workbench WBIMPORT est destiné à être en vrac Chargement de fichiers texte Pas besoin de lire le fichier CSV via JDBC
J'aime l'idée Oledb ... c'est intelligent! :)
Toute façon sans charger toutes les données CSV en mémoire?
J'ai de bonnes expériences personnelles avec fichiershelpers ( http://www.filehelpers.net/ ). p>
public void LoadCheckFiletoDatabase(string checkFilePath) { DataTable tempTable = GetDataTableFromCsv(checkFilePath); foreach (DataRow DataR in this.memDataTable.Columns) { Dictionary<string, object> Dic = new Dictionary<string, object>(); foreach (DataColumn DataCol in this.memDataTable.Columns) { string field = DataCol.ColumnName.ToString(); object value = (string)DataR[DataCol].ToString(); Dic.Add(field, value); } using (SQLiteConnection sQLiteConnection = new SQLiteConnection("data source=" + databasepath)) { using (SQLiteCommand sQLiteCommand = new SQLiteCommand(sQLiteConnection)) { System.Data.SQLite.SQLiteHelper sQLiteHelper = new SQLiteHelper(sQLiteCommand); sQLiteHelper.BeginTransaction(); sQLiteHelper.Insert(tempTable.TableName, Dic); } } } public static DataTable GetDataTableFromCsv(string path) { string pathOnly = Path.GetDirectoryName(path); string fileName = Path.GetFileName(path); string sql = @"SELECT * FROM [" + fileName + "]"; using(OleDbConnection connection = new OleDbConnection( @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + pathOnly + ";Extended Properties=\"Text;HDR=" + "Yes" + "\"")) using(OleDbCommand command = new OleDbCommand(sql, connection)) using(OleDbDataAdapter adapter = new OleDbDataAdapter(command)) { DataTable dataTable = new DataTable(); dataTable.Locale = CultureInfo.CurrentCulture; adapter.Fill(dataTable); dataTable.TableName = fileName.TrimEnd(new char[] {'.','c','s','v'}); return dataTable; } }
Les réponses du code seulement sont découragées. S'il vous plaît ajouter une explication. De plus, le code peut être formaté par plus de 4 espaces avant une ligne.
Adressant la dernière partie de votre question:
Peut-être que quelqu'un sait la chose beaucoup plus simple: comment faire des inserts en vrac des fichiers CSV dans SQLite ... P> blockQuote>
donné strong> Vous devez importer quelques-un milliards (ou un million de millions de million) dans SQLite à partir d'un fichier CSV,
Quand strong> Il n'y a pas de support direct pour l'importation de données CSV via les commandes SELECT ou INSERT,et strong> La ligne itérative de la ligne de lecture et d'insertion n'est pas performante < BR> alors strong> une alternative pratique consiste à utiliser la commande "SQLite? .exe" et la commande d'importation via Shell Execute à partir de votre code C #. P> loadcsvtosqlite.cs fort> p>
xxx pré> loadcsvtosqlite.bat strong> p>
xxx pré> loadcsv.sql forte> p>
xxx pré> p>