我需要不断地从 SQLite 迁移到 PostgreSQL。不断地,我的意思是我每天都会将 SQLite 数据库重新导入 PostgreSQL。如果我可以随意更改 SQLite 中的表,而不必手动对 PostgreSQL 数据库进行任何更改,那就太好了。我将从 Python 运行迁移,但它可以是任何可以从命令行控制的外部工具。该工具需要可用于 Linux,如果它也能在 Windows 上运行就好了。
在 Sqlite 3 中,我试图弄清楚如何根据最小值选择行。我认为我对相关术语的了解不足,无法有效地搜索谷歌。
该表看起来像:
num text num2
---------- ---------- ----------
0 a 1
0 a 2
1 a 3
1 b 4
Run Code Online (Sandbox Code Playgroud)
我想获取num2is1, 2和的行4。我想根据文本列的每个唯一值的 num 的最小值进行选择。
所以,对于text = 'a',最小值num是0,所以我想要第 1 行和第 2 行。对于text = 'b',最小值num是1,所以我想要行4。
使用 group by 的各种组合,我可以得到行1和2或行1和4。我觉得我缺少一个可以做我想做的事情的 SQL 组件,但我一直无法弄清楚它可能是什么。
执行此类查询的正确方法是什么?
我找到了一种方法来做到这一点。我的声誉不足以回答我自己的问题,所以我在这里进行更新。我不确定它是否总是正确的或效率如何。欢迎提出任何意见。
我使用了一个复合选择语句,其中一个查询为文本的每个唯一值找到 num 的最小值:
sqlite> select …Run Code Online (Sandbox Code Playgroud) 我想检查我可以访问的 Datasase 服务器上正在运行什么类型的 sql。我只能访问 Web 界面和表格列表。
通过该界面,我可以对列表中的表运行查询。
如何获取有关服务器和服务器正在运行的版本的更多信息。我不知道服务器正在运行的 IP 或端口。
我想知道服务器是 MySQL、Mircosoft SQL Server、Oracle SQL、Postgre SQL 还是其他 sql server。
我正在谈论的网站是这个: w3schools.com SQL editor。
编辑 2:虽然对于某些命令 select sqlite_version() 对我有用,但它不起作用。这是响应的屏幕截图。
编辑 3:在 Chromium 浏览器上,命令工作正常。但是在 Firefox 浏览器上,该命令不起作用。
我还提到我正在运行 Linux。
您认为在 Firefox 和 Chrome 上我得到不同结果的原因可能是什么?
我正在尝试为包含多个索引列的 SQLite DB 估计数据库大小(在磁盘上)。这些列是(SQLite)类型的整数和字符串。用这些列估计每行的大小很简单,但我不确定如何考虑由于索引而产生的额外的每行填充。最好的方法是什么?
在 Linux 上使用 sqlite3,如何处理多个数据库?
我想在数据库 1 中执行以下操作?
sqlite3 database1.db
insert into database1.mytable values (select * from database2.mytable)
Run Code Online (Sandbox Code Playgroud)
我如何编写SELECT上面的 database2 查询?
我正在考虑将 SQLite 数据库用于处理大量数据系列的 C# 应用程序。数据目前位于多个 CSV 文件中,每个文件的大小最大为 20GB,格式如下:
2019.07.31 00:00:03.855,1.11568,1.11571,3,0
在迁移到 SQLite 时,我希望大大减小大小,但由于某种原因,我得到了一些不同的结果。
CSV 格式的示例字符串占用 44 个字节(43 个字符 + 新行)。据我了解的 SQLite 类型定义在 sqlite.org 中数据库中应该大致相同:23 字节日期时间文本 + 8*2 实数 + 1*2 整数 = 41 字节
dateTime 可以存储为 8 字节整数 (c# DateTime.Ticks),这应该将大小减少到每行约 26 个字节,几乎比 CSV 格式少两倍。
对于一个实验,我尝试导入 142,157 行数据。CSV 文件大小约为 6kk 字节,但生成的 DB 文件约为 5kk,几乎相同。压缩(在 DB Browser for SQLite 中可用)不会改变任何东西。
表架构是:
CREATE TABLE "Data" ( "dateTime" INTEGER, "value1" REAL, "value2" REAL, "value3" INTEGER, "value4" INTEGER )
示例行如下所示:
637001280038550000 1.11568 1.11571 3 …
我可以将 SQLite 用作连接 2 个或更多应用程序的数据库吗?
即我可以使用它在不同的应用程序之间共享数据吗?
我是一个数据库新手,正在查看似乎将文本存储在整数列中的 SQLite 数据库。这是 sqlite3 命令行中的示例会话:
sqlite> .schema mytable
CREATE TABLE mytable (
id integer primary key, /* 0 */
mycol integer not null, /* 1 */
);
sqlite> SELECT mycol FROM mytable;
here is some text
here is more text
[...]
it's text all the way down
Run Code Online (Sandbox Code Playgroud)
我糊涂了。是什么赋予了?
我在一台可以使用制表符补全的机器上使用 sqlite3(即.read abc<tab>会自动补全到.read abcdefghij.db. 我想知道如何在我的个人机器上启用它。
编辑
两台机器都是ubuntu linux,shell是bash。我指的是 sqlite 交互式提示中的自动完成。
如何将此查询转换为 SQLite:
UPDATE Table_1
INNER JOIN Table_2 ON (Table_1.Field1 = Table_2.Field1)
AND(Table_1.Field2 = Table_2.Field2)
SET Table_1.Field3 = Table_2.Field3
Run Code Online (Sandbox Code Playgroud)
这是我尝试过的。
UPDATE Table_1
SET Field3 = (SELECT Field3
FROM Table2
WHERE (Field1 = Table_2.Field1)
AND (Field2 = Table_2.Field2))
WHERE Field1 IN (SELECT Table_2.Field1
FROM Table2
WHERE (Field1 = Table_2.Field1)
AND (Field2 = Table_2.Field2))
AND Field2 IN (SELECT Table_2.Field2
FROM Table2
WHERE (Field1 = Table_2.Field1)
AND (Field2 = Table_2.Field2))
Run Code Online (Sandbox Code Playgroud)
查询有效,但我得到错误的结果。