相关疑难解决方法(0)

是否可以在SQLite数据库中一次插入多行?

在MySQL中,您可以插入多行,如下所示:

INSERT INTO 'tablename' ('column1', 'column2') VALUES
    ('data1', 'data2'),
    ('data1', 'data2'),
    ('data1', 'data2'),
    ('data1', 'data2');
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试做这样的事情时,我收到了一个错误.是否可以在SQLite数据库中一次插入多行?这样做的语法是什么?

sql sqlite syntax

527
推荐指数
17
解决办法
36万
查看次数

如何获取列名列表

可以获取包含表的所有列名的行,如下所示:

|id|foo|bar|age|street|address|
Run Code Online (Sandbox Code Playgroud)

我不喜欢用Pragma table_info(bla).

sqlite

57
推荐指数
5
解决办法
11万
查看次数

如何配置sqlite以默认显示标头

有没有办法配置sqlite3,以便默认显示标题?

我知道我可以.headers on用来打开标题,但每次启动客户端时我都要继续键入它,因为设置不会在会话之间粘连.我希望标题永久保存.

sqlite config header

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

SQLite导出列名

是否有任何SQLite命令或第三方工具允许数据库转储在INSERT INTO语句中包含列名?

代替

INSERT INTO "MyTable" VALUES ('A', 'B');
Run Code Online (Sandbox Code Playgroud)

我想看

INSERT INTO "MyTable" (Column1, Column2) VALUES ('A', 'B');
Run Code Online (Sandbox Code Playgroud)

.dumpSQLite中的命令仅提供第一个版本.

sql sqlite

23
推荐指数
4
解决办法
5479
查看次数

返回SQLite数据库中表的大小的查询

我有一个包含许多表的SQLite数据库.我们正在编写一个维护工具,它将从表中删除"陈旧"数据,直到该表的大小为总数据库文件的某个百分比或更小.

我知道如何确定数据库文件的大小 - 我是通过执行来实现的

PRAGMA PAGE_SIZE;
Run Code Online (Sandbox Code Playgroud)

PRAGMA PAGE_COUNT;
Run Code Online (Sandbox Code Playgroud)

在两个单独的查询中,并将两者相乘以获取文件大小(以字节为单位).是的,我知道我可以以字节为单位获取文件的大小,但这与我在其他数据库中完成它的方式类似,我想坚持使用它,至少目前是这样.

我的问题是我不知道如何获得TABLE的大小.必须有一些方法来做到这一点.谁能指出我正确的方向?

database sqlite

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

为什么 SQLite 创建空的 sqlite_sequence 表?

我有一个包含多个表的数据库,其中第一个字段定义为:

'ID' INTEGER NOT NULL UNIQUE ... PRIMARY_KEY('ID')
Run Code Online (Sandbox Code Playgroud)

我没有对这些表中的任何一个使用 AUTOINCRMENT 关键字,但我的数据库包含一个空的 sqlite_sequence 表,我无法删除该表。将 ID 字段为 NULL 值的记录插入到这些表中会生成 ID 字段的默认增量值,但不会填充或更新 sqlite_sequence 表。有什么方法可以将这些表的最后插入的 rowid 值重置为 0 吗?

sql database sqlite sequence auto-increment

9
推荐指数
1
解决办法
7807
查看次数

获取空表中的列名列表

我正在使用Python的sqlite3模块,并希望在表没有任何行时获取表中所有列的列表.

通常,如果我创建一个像这样的数据库

import sqlite3

conn = sqlite3.connect(":memory:") 
c = conn.cursor()

# create the table schema
c.execute('''create table stocks
 (date text, trans text, symbol text,
  qty real, price real)''')

conn.commit()
c.close()
Run Code Online (Sandbox Code Playgroud)

然后我可以用类似的东西获得列名

conn.row_factory = sqlite3.Row
c = conn.cursor()
c.execute('select * from stocks')
r = c.fetchone()
print r.keys()
Run Code Online (Sandbox Code Playgroud)

问题是,如果表最初为空,则c.fetchone()返回None.如果有提交的行,那么我可以获得列名列表.

还有另一种方法吗?我浏览了官方sqlite3 模块文档,但在这方面找不到任何有用的东西.

我想我可以在表中放入一些虚拟数据,然后检索列名,然后删除该行,但我希望有一种更优雅的方式来做到这一点.

编辑:

似乎有几种方法可以做到:

  1. 获取用于创建表的SQL:

    c.execute("""SELECT sql FROM sqlite_master 
    WHERE tbl_name = 'stocks' AND type = 'table'""")
    
    Run Code Online (Sandbox Code Playgroud)
  2. 使用PRAGMAsqlite3中的语句:

    c.execute("PRAGMA table_info(stocks)")
    
    Run Code Online (Sandbox Code Playgroud)
  3. 使用对象的.description …

python sqlite

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

在sqlite3中获取列名

我想打印我的sql表内容,因此,我想从表中检索列名.我遇到的一个解决方案是:

SELECT sql FROM sqlite_master WHERE tbl_name = 'table_name' AND type = 'table'
Run Code Online (Sandbox Code Playgroud)

但看起来我将不得不解析结果.

另一个建议是使用:

PRAGMA table_info(table_name);
Run Code Online (Sandbox Code Playgroud)

但是下面的sqlite页面建议不要使用它:http: //www.sqlite.org/pragma.html#pragma_full_column_names

有没有办法实现这一目标.还有什么是使用的语法

PRAGMA table_info(table_name);
Run Code Online (Sandbox Code Playgroud)

以上解决方案已从此处获取

c c++ sqlite

6
推荐指数
1
解决办法
7137
查看次数

如何在添加列之前检查列是否存在

我有一个数据库,如果它不存在,我想添加一个列.我如何使用sqlite.swift API做到这一点?

sqlite.swift

6
推荐指数
1
解决办法
3052
查看次数

如何使用Sqlite.swift获取列名列表?

出于调试目的,我试图在我的SQLite表中获得一个简单的列名列表.我正在使用SQLite.swift框架.

我的问题比如何在sqlite3/iPhone上获取列名列表更具体所以我正在创建一个新问题.

运用

try db.execute("PRAGMA table_info(table_name);")
Run Code Online (Sandbox Code Playgroud)

通过将此答案应用于文档对我来说不起作用(没有任何反应).

ios swift sqlite.swift

5
推荐指数
1
解决办法
2573
查看次数

Perl DBI::SQLite:如何转储具有列名的表?

类似于如何获取Sqlite3数据库上的列名列表?,但仍然不同:

出于调试目的,我编写了一个转储 SQLite3 表的闭包。输出不是很漂亮,但它可以工作:

sub something($)
{
    my $dbh = shift;
    my $me = '_dump_tables';
    my $sep = '-' x length($me);
    my $dump_table = sub ($) {          # dump specified table or view
        if (defined(my $rows = $dbh->selectall_arrayref(
                        "SELECT * FROM $_[0]"))) {
            my $nsep = '-' x length($_[0]);

            print "$me: $_[0]\n";
            print "${sep}--${nsep}\n";
            foreach (@$rows) {
                print join('|', map { $_ // 'NULL' } @$_), "\n";
            }
        } else {
            print "$me: Houston, we have a problem! …
Run Code Online (Sandbox Code Playgroud)

sqlite perl dbi

2
推荐指数
1
解决办法
68
查看次数

标签 统计

sqlite ×9

sql ×3

database ×2

sqlite.swift ×2

auto-increment ×1

c ×1

c++ ×1

config ×1

dbi ×1

header ×1

ios ×1

perl ×1

python ×1

sequence ×1

swift ×1

syntax ×1