我有以下代码:
int rc; rc = sqlite3_exec(sqlite3_database, ".import mydata.csv mytable", callback, 0, &errMsg);
运行此命令后,errMsg包含以下错误消息:
near ".": syntax error
我假设它无法识别导入命令.但是,在命令行上从sqlite3程序运行它时,此命令有效.
我需要能够直接在我的程序中使用import命令.有没有办法可以做到这一点?我需要使用import命令的原因是因为为CSV文件的每一行执行插入需要超过5分钟,并且import命令需要一瞬间.
命令行shell .import
不是C API的一部分; 该sqlite3
工具将其实现为
sqlite3_prepare(..., "INSERT INTO '...' VALUES (?, ..., ?)", ...); sqlite3_exec(..., "BEGIN", ...); for (each entry) { for (each column) sqlite3_bind_text(..., column, ...); sqlite3_step(...); } sqlite3_exec(..., "COMMIT", ...);
进行一些错误检查(ROLLBACK
如果出现任何问题)并处理准备好的语句(sqlite3_reset
,sqlite3_finalize
).