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

标签 c# database sqlite csv bulkinsert

我见过类似的问题(12),但没有一个讨论如何将 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/

相关文章:

c# - 两个 bool 字段的异或运算

c# - 如何在 C# 中使用 iTextSharp 将添加的图像带到最前沿

c# - 内联加载数据的替代方法

c# - 无需调试的立即窗口

database - 规范化的类设计是否会导致规范化的数据库设计

MySQL通过乘法自增字段

mysql - 从同一列中选择特定值的每日数量

sqlite - 线程 "main"java.lang.NoClassDefFoundError : org/sqlite/NativeDB 中的异常

android - 在 Android 上获取 SQLite 列的亲和性

java - 为什么使用 SQLite 的 Constants 接口(interface)来保存字段名称?