如何将 CSV 文件批量插入 SQLite C#

Kir*_*ril 8 c# database csv sqlite bulkinsert

我见过类似的问题 ( 1 , 2 ),但没有人讨论如何将 CSV 文件插入 SQLite。我唯一能想到的就是使用 aCSVDataAdapter并填充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);
Run Code Online (Sandbox Code Playgroud)

要写入 CSV 文件:

CSVDataAdapter CSVda = new CSVDataAdapter(@"c:\MyFile.csv");

bool InclHeader = true;

CSVda.Update(MyDataSet,"MyTable",InclHeader);
Run Code Online (Sandbox Code Playgroud)

我发现上面的代码@ http://devintelligence.com/2005/02/dataadapter-for-csv-files/
CSVDataAdapter应该来与OpenNetCF自卫队,但它似乎没有可用了。

有人知道我在哪里可以得到CSVDataAdapter吗?也许有人知道更简单的事情:如何将 CSV 文件批量插入 SQLite ......您的帮助将不胜感激!

小智 6

解决您问题的最后一部分:

也许有人知道更简单的事情:如何将 CSV 文件批量插入 SQLite ...

鉴于需要导入记录几千(万元或CPL)到源码从一个CSV文件,
如果存在通过选择或插入命令为CSV数据导入不直接支持,
迭代逐行阅读和插入是不高效
那么一个实用的替代方法是使用“sqlite?.exe”和通过shell从你的c#代码执行的导入命令。

加载csvtosqlite.cs

Process proc = new Process {
    StartInfo = new ProcessStartInfo {
        FileName = @"loadcsvtosqlite.bat",
        Arguments = @"",
        UseShellExecute = true,
        RedirectStandardOutput = false,
        CreateNoWindow = true
    }
};
proc.Start();
proc.WaitForExit();
Run Code Online (Sandbox Code Playgroud)

加载csvtosqlite.bat

sqlite3.exe "db name" < loadcsv.sql
Run Code Online (Sandbox Code Playgroud)

加载csv文件

drop table if exists <table name>;
create table <table name> (field1 datatype, field2 datatype ....);
.separator ","
.import <csv file name> <table name>
Run Code Online (Sandbox Code Playgroud)


Sys*_*min 2

试试这个 -从 C# 代码从 SQLite 导入/导出 CSV

您可以创建 OleDbConnection 到 CSV 文件(只需 google 即可,非常简单),然后将行加载到 DataSet,然后通过 SqliteConnection 将该数据集放入 Sqlite。几行代码。