标签: sqlite

在sqlite3中更快的批量插入?

我有一个大约30000行数据的文件,我想加载到sqlite3数据库.有没有比为每行数据生成插入语句更快的方法?

数据以空格分隔,并直接映射到sqlite3表.是否有任何类型的批量插入方法用于向数据库添加卷数据?

如果它没有内置,有没有人设计出一些狡猾的好方法呢?

我应该先问一下,有没有一种C++方法可以从API中做到这一点?

c++ sqlite insert bulk

40
推荐指数
8
解决办法
4万
查看次数

Sqlite通过网络共享

有没有人有在LAN(Windows或Linux)上的SMB共享上运行Sqlite数据库的实际经验?

文档中可以清楚地看出,这并不是共享Sqlite数据库的最快方式.

显而易见的警告是它可能很慢,并且Sqlite一次只支持一个写入DB的线程.因此,您的并发性会降低很多,因为您的数据库更新现在会阻止数据库更长时间(数据在网络上传输时数据库将被锁定).

对于我的应用程序,我想要共享的数据量相当小,并且写入不太频繁(最多每隔几秒写一次).

我应该注意什么?这可以吗?

我知道这不是Sqlite的设计目标,我对基于Postgres/MySql/Sql Server的解决方案不太感兴趣,因为我试图尽可能保持我的应用程序尽可能少的依赖.

相关链接:

sqlite邮件列表中,我想一个很大的问题是SMB(windows或linux)上的filelock apis有多不可靠

sqlite

40
推荐指数
4
解决办法
3万
查看次数

从Python的sqlite3获取字段值列表,而不是表示行的元组

令人讨厌的是Python的sqlite3模块总是返回一个元组列表!当我查询单个列时,我宁愿得到一个简单的列表.

例如,当我执行

SELECT somecol FROM sometable
Run Code Online (Sandbox Code Playgroud)

并打电话

cursor.fetchall()
Run Code Online (Sandbox Code Playgroud)

它返回

[(u'one',), (u'two',), (u'three',)]
Run Code Online (Sandbox Code Playgroud)

但我宁愿得到

[u'one', u'two', u'three']
Run Code Online (Sandbox Code Playgroud)

有没有办法做到这一点?

python sqlite

40
推荐指数
4
解决办法
4万
查看次数

在sqlite3中删除CASCADE

我有以下结构:(抱歉尴尬的名字,这是因为它是我的iPhone应用程序的sqlite数据库尚未发布)

CREATE TABLE klb_log (
  id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
  log_comment varchar(512)
)

CREATE TABLE klb_log_food_maps (
  uid integer,
  did integer,
  PRIMARY KEY (uid,did),
  FOREIGN KEY (uid) references klb_log(id) ON DELETE CASCADE,
  FOREIGN KEY (did) references klb_food(id) ON DELETE CASCADE
)

CREATE TABLE klb_food (
  id integer,
  description varchar(255),
  PRIMARY KEY (id)
)
Run Code Online (Sandbox Code Playgroud)

klb_log_food_maps当我删除行时,是否有理由不删除行klb_log

sql sqlite

40
推荐指数
2
解决办法
4万
查看次数

SQLite外键

我遵循http://www.sqlite.org/foreignkeys.html上的SQLite文档中的说明,但是我添加外键的尝试失败了.这是我的创建语句:

CREATE TABLE 
    checklist (
        _id INTEGER PRIMARY KEY AUTOINCREMENT, 
        checklist_title TEXT,
        description TEXT,
        created_on INTEGER, 
        modified_on INTEGER
    );

CREATE TABLE 
    item (
        _id INTEGER PRIMARY KEY AUTOINCREMENT,  
        FOREIGN KEY(checklist_id) REFERENCES checklist(_id), 
        item_text TEXT, item_hint TEXT, 
        item_order INTEGER, 
        created_on INTEGER, 
        modified_on INTEGER
    );
Run Code Online (Sandbox Code Playgroud)

第一张表很好.错误发生在第二个语句中.我已经尝试将两个查询包装在一个事务中而没有.这是错误:

未知栏 "checklist_id" 外键的定义(代码1):在编译:CREATE TABLE项目(_id INTEGER PRIMARY KEY AUTOINCREMENT,外键(checklist_id)参考清单(_id),ITEM_TEXT TEXT,item_hint TEXT,item_order INTEGER,created_on INTEGER ,modified_on INTEGER)

sql sqlite android foreign-key-relationship create-table

40
推荐指数
3
解决办法
3万
查看次数

将表结构复制到sqlite3中的新表

有没有一种简单的方法可以将现有的表结构复制到新的表结构?(不需要数据,只需要结构 - >像id INTEGER,name varchar(20)......)

谢谢

sql database sqlite copy

40
推荐指数
2
解决办法
4万
查看次数

实体框架6与SQLite 3代码优先 - 不会创建表

使用NuGet的EF6和SQLite的最新版本.我终于得到app.config文件在Stackoverflow上的一些有用的帖子后工作.现在问题是虽然数据库是,但是没有创建表.

我的app.config:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <configSections>
    <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
    <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
  </configSections>
  <startup>
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
  </startup>
  <entityFramework>
    <providers>
      <provider invariantName="System.Data.SQLite"
                type="System.Data.SQLite.EF6.SQLiteProviderServices, System.Data.SQLite.EF6" />
    </providers>
  </entityFramework>
  <system.data>
    <DbProviderFactories>
      <remove invariant="System.Data.SQLite" />
      <add name="SQLite Data Provider"
           invariant="System.Data.SQLite"
           description=".Net Framework Data Provider for SQLite"
           type="System.Data.SQLite.SQLiteFactory, System.Data.SQLite" />
      <remove invariant="System.Data.SQLite.EF6" />
      <add name="SQLite Data Provider (Entity Framework 6)"
           invariant="System.Data.SQLite.EF6"
           description=".Net Framework Data Provider for SQLite (Entity …
Run Code Online (Sandbox Code Playgroud)

.net sqlite system.data.sqlite ef-code-first entity-framework-6

40
推荐指数
3
解决办法
5万
查看次数

当不支持IF EXISTS运算符时,删除SQLite中的现有表

我的SQLite版本不支持IF EXISTS运营商.如何在没有错误的情况下丢弃可能存在或可能不存在的表格?

我现在无法在实时应用程序上更新版本,因此我无法使用支持的SQLite版本IF EXISTS.

sql database sqlite

39
推荐指数
3
解决办法
9万
查看次数

什么是混合模式组件?

我正在查看System.Data.SQLite下载页面,它列出了.NET 4的混合模式程序集和常规(我假设).我将要使用这个库的项目是.NET 4,它将被编译为x86.

我有两个问题:

  1. 什么是混合模式组件?谷歌回复了一系列令人困惑的答案,但这些答案都没有多大意义.一个答案表明,所有这些都是关于混合原生代码和托管代码,而其他人则认为它混合了.Net版本.
  2. 我应该从哪个下载中找到我的情况?

sqlite assemblies .net-4.0 system.data.sqlite

39
推荐指数
3
解决办法
2万
查看次数

使用SQLite在SQLAlchemy中返回不同的行

SQLAlchemy的Query.distinct方法行为不一致:

>>> [tag.name for tag in session.query(Tag).all()]
[u'Male', u'Male', u'Ninja', u'Pirate']
>>> session.query(Tag).distinct(Tag.name).count()
4
>>> session.query(Tag.name).distinct().count()
3
Run Code Online (Sandbox Code Playgroud)

所以第二种形式给出了正确的结果,但第一种形式却没有.这似乎发生在SQLite中,但不适用于Postgres.我有一个函数,它传递一个查询对象来distinct应用一个子句,所以重写所有内容非常困难,最好使用上面的第二种方法.有什么明显的东西让我失踪吗?

python sqlite sqlalchemy

39
推荐指数
2
解决办法
5万
查看次数