Questions tagged «sqlite»

SQLite是一个软件库,可实现自包含,无服务器,零配置的事务型SQL数据库引擎。

10
提高SQLite每秒INSERT的性能
优化SQLite是棘手的。C应用程序的大容量插入性能可以从每秒85次插入到每秒96,000次以上插入! 背景:我们正在将SQLite用作桌面应用程序的一部分。我们将大量配置数据存储在XML文件中,这些文件将被解析并加载到SQLite数据库中,以便在初始化应用程序时进行进一步处理。SQLite是这种情况的理想选择,因为它速度快,不需要专门的配置,并且数据库作为单个文件存储在磁盘上。 基本原理: 最初,我对看到的性能感到失望。事实证明,取决于数据库的配置方式和使用API​​的方式,SQLite的性能可能会发生很大的变化(对于批量插入和选择)。弄清楚所有选项和技术是什么都不是一件容易的事,因此,我认为创建此社区Wiki条目与Stack Overflow阅读器共享结果以节省其他人的麻烦是审慎的做法。 实验:我认为,最好是编写一些C代码并实际衡量各种选择的影响,而不是简单地谈论一般意义上的性能提示(即“使用事务!”)。我们将从一些简单的数据开始: 28 MB TAB分隔的文本文件(约865,000条记录),用于多伦多市的完整运输时间表 我的测试计算机是运行Windows XP的3.60 GHz P4。 使用Visual C ++ 2005 将代码编译为“发布”,“完全优化”(/ Ox)和“最爱快速代码”(/ Ot)。 我正在使用直接编译到测试应用程序中的SQLite“合并”。我刚好拥有的SQLite版本(3.6.7)有点旧,但是我怀疑这些结果将与最新版本相当(如果您另有意见,请发表评论)。 让我们写一些代码! 代码:一个简单的C程序,它逐行读取文本文件,将字符串拆分为值,然后将数据插入SQLite数据库。在此“基准”版本的代码中,创建了数据库,但实际上不会插入数据: /************************************************************* Baseline code to experiment with SQLite performance. Input data is a 28 MB TAB-delimited text file of the complete Toronto Transit System schedule/route info from http://www.toronto.ca/open/datasets/ttc-routes/ …

16
在每个GROUP BY组中选择第一行?
顾名思义,我想选择以分组的每一行的第一行GROUP BY。 具体来说,如果我有一个purchases看起来像这样的表: SELECT * FROM purchases; 我的输出: id | 客户| 总 --- + ---------- + ------ 1 | 乔| 5 2 | 莎莉| 3 3 | 乔| 2 4 | 莎莉| 1个 我想查询每个人id最大的购买金额(total)customer。像这样: SELECT FIRST(id), customer, FIRST(total) FROM purchases GROUP BY customer ORDER BY total DESC; 预期产量: FIRST(id)| 客户| …


22
如何在SQLite中检查表是否存在?
我如何可靠在SQLite中检查是否存在特定的用户表? 我不是在要求不可靠的方法,例如检查表上的“ select *”是否返回错误(这甚至是个好主意吗?)。 原因是这样的: 在我的程序中,我需要创建然后填充一些表(如果还不存在)。 如果它们已经存在,则需要更新一些表。 我是否应该采取其他途径来表示已经建立了相关表-例如,通过在磁盘上的程序初始化/设置文件中创建/放置/设置某个标志,等等? 还是我的方法有意义?
893 sqlite 

10
Android上SQLite的最佳做法是什么?
在Android应用程序中的SQLite数据库上执行查询时,最佳做法是什么? 从AsyncTask的doInBackground运行插入,删除和选择查询是否安全?还是应该使用UI线程?我想数据库查询可能“繁重”,并且不应该使用UI线程,因为它可以锁定应用程序-导致应用程序无响应(ANR)。 如果我有几个AsyncTask,它们应该共享一个连接还是应该每个打开一个连接? 这些方案是否有最佳实践?
694 android  database  sqlite 


24
是否可以一次在SQLite数据库中插入多行?
在MySQL中,您可以像这样插入多行: INSERT INTO 'tablename' ('column1', 'column2') VALUES ('data1', 'data2'), ('data1', 'data2'), ('data1', 'data2'), ('data1', 'data2'); 但是,尝试执行此类操作时出现错误。是否可以一次在SQLite数据库中插入多行?这样做的语法是什么?
551 sql  sqlite  syntax 

18
SQLite-UPSERT *不是* INSERT或REPLACE
http://en.wikipedia.org/wiki/Upsert 在SQL Server上插入更新存储的proc 在我没有想到的SQLite中,有什么聪明的方法可以做到这一点吗? 基本上,如果记录存在,我想更新四列中的三列;如果不存在,我想使用第四列的默认(NUL)值插入记录。 ID是一个主键,因此UPSERT只会有一个记录。 (我试图避免SELECT的开销,以便确定是否需要显式更新或插入) 有什么建议吗? 我无法在SQLite网站上确认TABLE CREATE的语法。我还没有建立一个演示来测试它,但是似乎不被支持。 如果是的话,我有三列,因此实际上看起来像: CREATE TABLE table1( id INTEGER PRIMARY KEY ON CONFLICT REPLACE, Blob1 BLOB ON CONFLICT REPLACE, Blob2 BLOB ON CONFLICT REPLACE, Blob3 BLOB ); 但前两个Blob不会引起冲突,只有ID会发生冲突,因此我不会替换Blob1和Blob2(根据需要) 当绑定数据是一个完整的事务时,SQLite中的UPDATE意味着要更新的每个发送行都需要:Prepare / Bind / Step / Finalize语句,与INSERT不同,后者允许使用reset函数 语句对象的寿命如下所示: 使用sqlite3_prepare_v2()创建对象 使用sqlite3_bind_接口将值绑定到主机参数。 通过调用sqlite3_step()运行SQL 使用sqlite3_reset()重置该语句,然后返回到步骤2并重复。 使用sqlite3_finalize()销毁语句对象。 我猜测UPDATE与INSERT相比比较慢,但是与使用主键的SELECT相比又如何呢? 也许我应该使用select读取第4列(Blob3),然后使用REPLACE编写一条将原始第4列与前3列的新数据混合在一起的新记录?
535 sql  sqlite  upsert 

17
引用.NET 4.0项目中的.NET 2.0混合模式程序集,需要什么“附加配置”?
我有一个项目,我想在其中使用一些.NET 4.0功能,但核心要求是我可以使用针对2.X编译的System.Data.SQLite框架。我看到有可能提及此问题,例如此处接受的答案,但我看不出如何实际实现。 当我尝试在引用2.X程序集的同时尝试运行4.0项目时,我得到: 混合模式程序集是针对运行时的版本“ v2.0.50727”构建的,如果没有其他配置信息,则无法在4.0运行时中加载。 需要什么“附加配置”?

6
是否有一个等同于MySQL的DESCRIBE [表]的SQLite?
我刚刚开始学习SQLite。能够看到表格的详细信息(如MySQL的表格)会很高兴DESCRIBE [table]。PRAGMA table_info [table]不够好,因为它仅具有基本信息(例如,它不会显示列是否是某种字段)。SQLite有办法吗?
440 mysql  sqlite 

18
如何获取Sqlite3数据库上的列名列表?
我想将我的iPhone应用程序迁移到新的数据库版本。由于我没有保存某些版本,因此需要检查某些列名称是否存在。 该Stackoverflow条目建议进行选择 SELECT sql FROM sqlite_master WHERE tbl_name = 'table_name' AND type = 'table' 并解析结果。 这是常见的方式吗?备择方案?
373 sqlite 

6
在sqlite的表中插入新列?
我有一个列的表name,qty,rate。现在,我需要COLNew在name和qty列之间添加一个新列。如何在两列之间添加新列?
354 sqlite 

10
Java和SQLite [关闭]
关闭。此问题不符合堆栈溢出准则。它当前不接受答案。 想改善这个问题吗?更新问题,使其成为Stack Overflow 的主题。 6年前关闭。 改善这个问题 我对单个文件数据库提供的简洁性感到着迷。可以使用哪些驱动程序/连接器库来连接SQLite并将其与Java一起使用。 我发现了一个包装器库http://www.ch-werner.de/javasqlite,但是还有其他更出色的项目吗?
333 java  sqlite 

9
具有大型数据库文件的sqlite的性能特征是什么?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引文回答。 6年前关闭。 改善这个问题 我知道sqlite即使支持超大数据库文件也不能很好地工作(在sqlite网站上曾经有评论说,如果您需要的文件大小超过1GB,则可能要考虑使用企业rdbms。找不到了,可能与旧版本的sqlite有关)。 但是,出于我的目的,我想在考虑其他解决方案之前先了解一下它的严重程度。 我说的是从2GB开始的数GB范围内的sqlite数据文件。有人对此有经验吗?有任何提示/想法吗?

4
核心数据与SQLite 3的比较[关闭]
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案会得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意测验或进一步的讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 8年前关闭。 我已经非常熟悉关系数据库,并且过去使用过SQLite(和其他数据库)。但是,Core Data具有一定的吸引力,因此我正在考虑花一些时间来学习它,以便在我的下一个应用程序中使用。 通过SQLite使用Core Data有很多好处,反之亦然?每种优点/缺点是什么? 我发现当苹果不将其用于许多旗舰应用程序(如Mail.app或iPhoto.app)而不是选择SQLite数据库时,很难证明学习核心数据的成本。SQLite在iPhone上也被广泛使用。 熟悉这两种方法的人能否评论他们的经历?也许像大多数事情一样,这个问题比仅仅使用一个问题更深刻?
314 cocoa  macos  core-data  sqlite 

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.