我见过类似的问题(1,2),但没有一个讨论如何将 CSV 文件插入 SQLite。我唯一能想到的就是使用 CSVDataAdapter
并填充 SQLiteDataSet
,然后使用 SQLiteDataSet
更新表数据库:
我发现的 CSV 文件的唯一 DataAdapter 实际上不可用:
CSVDataAdapter CSVda = new CSVDataAdapter(@"c:\MyFile.csv");
CSVda.HasHeaderRow = true;
DataSet ds = new DataSet(); // <-- Use an SQLiteDataSet instead
CSVda.Fill(ds);
写入 CSV 文件:
CSVDataAdapter CSVda = new CSVDataAdapter(@"c:\MyFile.csv");
bool InclHeader = true;
CSVda.Update(MyDataSet,"MyTable",InclHeader);
我在@http://devintelligence.com/2005/02/dataadapter-for-csv-files/ 找到了上面的代码
CSVDataAdapter
应该带有 OpenNetCF's SDF , 但它似乎不再可用。
有谁知道我在哪里可以获得CSVDataAdapter
?也许有人知道更简单的事情:如何将 CSV 文件批量插入到 SQLite 中……非常感谢您的帮助!
最佳答案
解决您问题的最后一部分:
Perhaps somebody knows the much simpler thing: how to do bulk inserts of CSV files into SQLite...
假设您需要将几千条(或几百万条)记录从 CSV 文件导入到 sqlite 中,
当不直接支持通过选择或插入命令导入 csv 数据时,
并且逐行读取和插入的迭代不支持性能
然后一个实用的替代方法是使用“sqlite?.exe”和通过 shell 从您的 c# 代码执行的导入命令。
loadcsvtosqlite.cs
Process proc = new Process {
StartInfo = new ProcessStartInfo {
FileName = @"loadcsvtosqlite.bat",
Arguments = @"",
UseShellExecute = true,
RedirectStandardOutput = false,
CreateNoWindow = true
}
};
proc.Start();
proc.WaitForExit();
loadcsvtosqlite.bat
sqlite3.exe "db name" < loadcsv.sql
loadcsv.sql
drop table if exists <table name>;
create table <table name> (field1 datatype, field2 datatype ....);
.separator ","
.import <csv file name> <table name>
关于c# - 如何将 CSV 文件批量插入 SQLite C#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2689098/