SQLite3数据库在嵌入式应用之四:如何导出数据库?给出代码示例
发布时间:2020-12-12 19:26:44 所属栏目:百科 来源:网络整理
导读:翻找SQLite的教程,也没有找到怎么用SQL语句将本地数据库导出来。网上搜了搜,最后发现只能用SQLite 二进制应用程序将数据库导出来。似乎都没有给出如何在代码里集成这个功能。下面详细说下,怎么将这个功能融合到你的代码里,让此功能形成一个接口函数。 1
翻找SQLite的教程,也没有找到怎么用SQL语句将本地数据库导出来。网上搜了搜,最后发现只能用SQLite 二进制应用程序将数据库导出来。似乎都没有给出如何在代码里集成这个功能。下面详细说下,怎么将这个功能融合到你的代码里,让此功能形成一个接口函数。
1、在SQLite的交叉编译结果中,有个bin文件夹,其中有个二进制应用程序sqlite3,如下图所示: 2、将此sqlite3程序放入你的打包文件,设置环境变量指向这个bin export PATH=/opt/run_my_app/sqlite3/bin:$PATH 将此句写到app启动脚本里,在初始化时设置好PATH环境变量,否则在代码中直接运行sqlite3是找不到的。 3、命令如何写? "sqlite3 -csv datebasePath "select ID,NAME,NO FROM "TABLE_NAME" " > exportFilePath" sqlite3可导出csv,txt等格式,这里选择导出csv格式。 4、代码示例: #define TABLE_NAME " TEST " #define EXPORT_FILE "sqlite3 -csv %s "select ID,NO FROM "TABLE_NAME" " > %s" void my_table_export(IN handle handle,IN char *export_file_path) { obj_t *p_obj = handle; char tmp[128] = {0}; FILE* cmdFile = NULL; pthread_mutex_t *lock = NULL; if (NULL == export_file_path || NULL == p_obj) { printf("NULL pointer,error!"); return; } lock = &(p_obj->mux); pthread_mutex_lock(lock); snprintf(tmp,sizeof(tmp),EXPORT_FILE,p_obj->datebase_path,export_file_path); cmdFile = popen(tmp,"r"); pclose(cmdFile); pthread_mutex_unlock(lock); } 要点:1)用锁保护导出的数据; 2)用popen; 完。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |