如何在没有安装开发库的情况下在C中使用sqlite3?

问题描述:

我想在RedHat Linux服务器下用SQLite加载本地数据库。我有一个C代码来从一个非常大的文件加载数据库拆分列。坏新是sqlite3的未安装在机器(fatal error: sqlite3.h: No such file or directory),我将不能够有权限安装libsqlite3-devacording to this),所以我只能用它穿透式bash或蟒蛇:如何在没有安装开发库的情况下在C中使用sqlite3?

[[email protected]:~]$ locate sqlite3 
/opt/xiv/host_attach/xpyv/lib/libsqlite3.so 
/opt/xiv/host_attach/xpyv/lib/libsqlite3.so.0 
/opt/xiv/host_attach/xpyv/lib/libsqlite3.so.0.8.6 
/opt/xiv/host_attach/xpyv/lib/python2.7/sqlite3 
/opt/xiv/host_attach/xpyv/lib/python2.7/lib-dynload/_sqlite3.so 
/opt/xiv/host_attach/xpyv/lib/python2.7/sqlite3/__init__.py 
/opt/xiv/host_attach/xpyv/lib/python2.7/sqlite3/dbapi2.py 
/opt/xiv/host_attach/xpyv/lib/python2.7/sqlite3/dump.py 
/usr/bin/sqlite3 
/usr/lib64/libsqlite3.so.0 
/usr/lib64/libsqlite3.so.0.8.6 
/usr/lib64/python2.6/sqlite3 
/usr/lib64/python2.6/lib-dynload/_sqlite3.so 
/usr/lib64/python2.6/sqlite3/__init__.py 
/usr/lib64/python2.6/sqlite3/__init__.pyc 
/usr/lib64/python2.6/sqlite3/__init__.pyo 
/usr/lib64/python2.6/sqlite3/dbapi2.py 
/usr/lib64/python2.6/sqlite3/dbapi2.pyc 
/usr/lib64/python2.6/sqlite3/dbapi2.pyo 
/usr/lib64/python2.6/sqlite3/dump.py 
/usr/lib64/python2.6/sqlite3/dump.pyc 
/usr/lib64/python2.6/sqlite3/dump.pyo 
/usr/lib64/xulrunner/libmozsqlite3.so 
/usr/share/man/man1/sqlite3.1.gz 
/usr/share/mime/application/x-kexiproject-sqlite3.xml 
/usr/share/mime/application/x-sqlite3.xml 

以下选项会更快?

  1. 斯普利特在我的C程序中的列,然后执行插入像 这样:

    system("echo 'insert into t values(1,2);'" | sqlite3 mydb.db); 
    
  2. 斯普利特在我的C程序栏,将其保存到一个临时文件,当 我得赶紧500.000行我执行这样的脚本(然后空 临时文件,无法继续装载行):

    system("sqlite3 mydb.db < temp.sql); 
    
  3. 斯普利特在我的C程序追加它们之间的分隔符列,将其保存到临时文件,并导入它是这样的:

    .delimiter '@' 
    .import temp.txt t 
    
+0

我不明白。你没有安装sqlite3,但你问用sqlite3你需要调用哪个命令...? –

您可以使用amalgation版本。这是一个可以包含在项目中的单个.c文件,并且所有的SQLite都可用。不需要动态链接。

+0

我已经下载了文件'C source code as a merge,version 3.11.1.' of the download page,I've uploaded it to my home,then I've put on the top'#include“/ home /llami/sqlite3.c“,但它返回了很多编译错误:https://gist.github.com/mllamazing/18c33c2ff55b25c94293我解雇了什么? – harrison4

+1

“包含在您的项目中”与“包含在某个.c文件中”不同。只需像其他任何.c文件一样编译它即可。 –

+0

对,对不起。最后,我使用以下步骤解决它:http://www.mail-archive.com/[email protected]/msg30132.html非常感谢! :) – harrison4

你也许可以尝试在运行时动态加载的sqlite3库。 有很多东西需要了解它,但这是一个强大的功能,我相当肯定这会解决您的问题。

这里是描述你如何能做到这一个链接:http://tldp.org/HOWTO/Program-Library-HOWTO/dl-libraries.html

下载devel包,并从项目目录使用它。你只需要编译它。