Articles of sqlite

sqlite插入需要很长时间

我插入一个sqlite数据库表只有200,000行。 我只是在terminal中通过sqlite3使用非常简单的.sql文件。 我敢打赌它已经跑了至less30分钟了。 这是正常的,还是应该closures这个过程,尝试一些不同的东西?

如何编译与ICU的SQLite?

我从http://www.sqlite.org/sqlite-autoconf-3070701.tar.gz下载了sqlite 我怎样才能编译与icu的sqlite?

SQLite查询的执行时间:单位

正如在SQLite文档中所描述的,人们可以使用: sqlite> .timer ON 或者将相同的命令添加到〜/ .sqliterc 完成此操作后,SQLite shell会对每个执行的查询以CPU时间的用户和sys组件进行响应: user@machine% sqlite3 test.db — Loading resources from ~/.sqliterc SQLite version 3.7.14 2012-09-03 15:42:36 Enter ".help" for instructions Enter SQL statements terminated with a ";" sqlite> select count(*) from my_table; count(*) 10143270 CPU Time: user 0.199970 sys 1.060838 虽然我发现这个答案在几秒钟内为时间单位提供了证据,但我却很难同意。 当使用秒表计时执行查询时,我发现几乎每个查询所花费的时间都比shell的时间要长。 例如,上面例子中的查询时间约为1分54秒 。 这种差异的原因是什么? 那么再一次,这些单位是什么? 什么是用户和系统组件? 我在通过NFS访问的Debian GNU / […]

将数据embedded到C ++程序中

我有一个使用SQLite的C ++程序。 我想将SQL查询存储在一个单独的文件中 – 一个纯文本文件, 而不是一个源代码文件 – 但是将该文件embedded到可执行文件中,就像资源一样。 (这个必须在Linux上运行,所以我不能把它作为一个实际的资源存储,据我所知,尽pipe如果它是Windows的话,那将是完美的)。 有没有简单的方法来做到这一点,还是会有效地要求我为Linux编写自己的资源系统? (很容易,但需要更长的时间。)

sql的正确path/ URI的PHP在Windows上的pdo

[ante-scriptum:这是一个自我回答的问题,你不需要麻烦回答] 我遇到了一个奇怪的configuration问题,没有logging在特定的PHP.net页面或StackOverflow的任何地方。 问题 在Windows上打开现有的sqlite数据库时,同样的错误一直显示: SQLSTATE[HY000] [14] Unable To Open Database File 虽然执行的代码是从手册复制/粘贴: <?php /* Connect to an ODBC database using driver invocation */ $dsn = 'sqlite:/full/path/to/db'; $user = 'dbuser'; $password = 'dbpass'; try { $dbh = new PDO($dsn, $user, $password); } catch (PDOException $e) { echo 'Connection failed: ' . $e->getMessage(); } ?> 我无法打开这个数据库,因为我在Google上search了各种各样的DSN: $dsn […]

静态链接SQLite与DMD(Windows x86)

我试图静态链接与sqlite3没有成功。 我正在使用“etc.c.sqlite3”标题和sqlite3合并。 创build.lib文件我已经尝试了VC ++和MinGW-gcc,它们都能成功编译源文件 – 但是它们都生成COFF对象格式(DMD使用的optlink,可以和OMF一起使用)。 在阅读“digitalmars.D”上的post后,我尝试了几种不同的解决scheme。 objconv: 试图转换使用GCC创build的lib文件,导致未定义的符号,如__divdi3和__muldi3,无法解决这个问题。 也试过这个将sqlite3.o文件转换为* .obj,然后使用digitalmars'lib.exe' – 也不成功 在VC ++生成的lib上尝试objconv失败,因为:“SQLite.lib是一个导入库” IMPLIB: 如果我从sqlite.org下载了预编译的DLL并使用了implib,它会生成一个lib文件,但是这个名字似乎并不匹配,因为即使我与静态库链接,仍然会收到相同的sqlite错误(例如undefined符号_sqlite3_open , _sqlite3_errmsg , _sqlite3_close … coffimplib: 如果我在VC ++创build的库文件上使用coffimplib,程序将生成一个几乎为空的文件(〜2KB),其中只包含垃圾(即根本没有符号,大部分只是'空'值)。 如果我对GCC创build的库做同样的事情,coffimplib会抱怨“不是导入库”,也不会生成转换后的库文件。 如果我使用DMC来编译sqlite3合并,编译失败抱怨大量的错误。 所以在这里,我陷入了困境,有没有人有任何想法或提示什么可以解决这个问题? 注意:我不想使用DLL,但静态链接与SQLite(为可执行文件大小考虑)。

为什么Windows提供了一个sqlite3.OperationalError和Linux不?

问题 我有一个程序使用风暴0.14 ,它给了我这个错误在Windows上: sqlite3.OperationError:数据库表被locking 事情是,在Linux下它工作正常。 我有这样的印象,只有在完成了一定的修改之后才会发生,就像在某些代码中发生的那样,它会复制大量的对象。 打开debugging模式给了我这个在Windows上: 83 EXECUTE:'UPDATE regularorder_product SET discount =? WHERE regularorder_product.order_id =? AND regularorder_product.product_id =?',(Decimal(“25.00”),788,274) 84完成 85 EXECUTE:'UPDATE repeated_orders SET nextDate =? WHERE repeated_orders.id =?',(datetime.date(2009,3,31),189) 86错误:数据库表被locking 在linux上: 83 EXECUTE:'UPDATE regularorder_product SET discount =? WHERE regularorder_product.order_id =? AND regularorder_product.product_id =?',(Decimal(“25.00”),789,274) 84完成 85 EXECUTE:'UPDATE repeated_orders SET nextDate =? WHERE repeated_orders.id =?',(datetime.date(2009,3,31),189) 86完成 系统信息 […]

有没有办法中止SQLite调用?

我在Windows应用程序中使用SQLite3。 我有源代码(所谓的SQLite合并)。 有时我必须执行大量的查询。 也就是说,我在准备好的语句上调用sqlite3_step ,并且花费很多时间来完成(由于繁重的I / O负载)。 我想知道是否有可能放弃这样的电话。 如果能够在同一个线程的调用过程中进行一些后台处理(因为大部分时间都用于等待I / O完成),我也会很高兴。 我想过自己修改SQLite代码。 在最简单的情况下,我可以在每次调用ReadFile / WriteFile之前检查一些条件(例如中止事件句柄),并适当地返回一个错误代码。 并且为了允许后台处理文件应该以重叠模式打开(这使得asynchronous的ReadFile / WriteFile )。 在某些情况下,即使启用了日志, WriteFile中断是否有可能使数据库处于不一致的状态? 我想不是,因为日志文件的整个想法是准备任何types的任何错误。 但是我想听到更多的意见。 另外,有人尝试过类似的东西吗? 提前致谢。 编辑: 感谢ereOn。 我没有意识到sqlite3_interrupt的存在。 这可能回答我的问题。 现在,对于所有人来说,想知道在同一个线程的I / O期间如何(以及为什么)要做一些后台处理。 不幸的是,很多人都不熟悉所谓的“重叠I / O”。 http://en.wikipedia.org/wiki/Overlapped_I/O 使用它可以asynchronous地发出I / O操作,并且调用线程不会被阻塞 。 然后使用完成机制之一接收I / O完成状态:等待事件,排队到APC中的新例程或完成端口。 使用这种技术不需要创build额外的线程。 实际上创build线程的唯一真正的合法化是当你的瓶颈是计算时间(即CPU负载),并且机器有几个CPU(或核心)。 而创build一个线程只是为了让它在大多数时间被操作系统阻塞 – 这是没有道理的。 这导致操作系统资源的不合理浪费,使程序复杂化(需要同步等)。 不幸的是,并不是所有的库/ API都允许asynchronous操作模式,因此创build额外的线程必然是邪恶的。 EDIT2: 我已经find了解决scheme,thansk ereOn。 对于所有那些坚持认为在“等待”I […]

在C#中创buildCron作业

我在C#中编写一个调度types的应用程序,并允许用户存储他们想要在特定时间运行的任务。 现在我给他们指定运行频率(每日/每周/每月)以及指定时间的选项,然后存储在数据库中。 我有点麻烦,只是把我的头围绕在这个背后的伪代码上,我正在寻找一些关于如何实现它的build议。 我每60秒运行一个重复计时器来检查每个任务是否需要运行,但是当我需要使用date/时间并且添加循环日(每天/每周/等)时,似乎总是碰到路障它甚至更多。

在Windows上使用SQLite的Spatialite扩展

我知道这是以前曾经以类似的方式问过的。 但是,我发现的所有问题都涉及到一些非常具体的系统设置,这些系统设置对我来说是不适用的(因为我的是这样)。 系统: Windows 7 64位 Python 3.4 64位 sqlite3 2.6.0(与Python我猜) Spatialite Windows二进制文件2.3.1(其他任何重要的东西?) 我如何激活sqlite3模块的spatialite扩展? 我所尝试的(其他人在类似问题中说的方式): 从https://www.gaia-gis.it/spatialite-2.3.1/binaries.html下载: libspatialite-win-x86-2.3.1.zip proj-win-x86-4.6.1.zip geos-win-x86-3.1.1.zip libiconv-win-x86-1.9.2.zip 把它们全部解压缩到C:\ (也只尝试将DLL放入该文件夹) 将该文件夹放入我的系统PATHvariables 然后,跑步 import sqlite3 conn = sqlite3.connect(":memory:") conn.enable_load_extension(True) conn.execute('SELECT load_extension("libspatialite-2.dll")') 给 conn.execute("SELECT load_extension('libspatialite-2.dll')") sqlite3.OperationalError: The specified module could not be found. 还有什么可以尝试做这个工作?