标签: sqlite

更新 CentOS 7 上 Python 3 使用的 SQLite 版本

我已经在 Centos 7.4 机器上安装了 Python 3.6,并且需要 SQLite 的更新版本(我正在使用一些新功能)。它附带的 SQLite 版本非常旧:3.7.17。

这是怎么做到的?在 Windows 上,将 Python\DLLs 目录中的 sqlite.dll 文件替换为所需的文件很简单,但我没有找到如何在 Linux 上执行此操作的信息。

我可以看到这个问题之前有人问过,但没有回答 - /sf/ask/2734513071/ - 这是我唯一的页面谷歌搜索;大多数其他结果是 Python 2/pysqlite,这对我没有帮助。

那么,如何在 CentOS 机器上更新 Python 使用的 SQLite 版本呢?

centos python software-installation sqlite python3

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

SQLite 命令“.import”如何直接从标准输入读取?

您将如何修改函数csv_to_sqlite以便sqlite3命令.import直接从标准输入而不是从临时命名管道读取?

#!/bin/bash

function csv_to_sqlite() {
  local database_file_name="$1"
  local table_name="$2"
  local temp_input_fifo=$(mktemp -u)
  mkfifo $temp_input_fifo
  sqlite3 -csv $database_file_name ".import $temp_input_fifo $table_name" &
  cat > $temp_input_fifo
  rm $temp_input_fifo
}

database_file_name=$1
table_name=$2

csv_to_sqlite "$database_file_name" "$table_name"
Run Code Online (Sandbox Code Playgroud)
$ printf "col1,col2,col3\na,1,2.6\nb,2,5.4\n" | ./csv_to_sqlite test.sqlite test
$ sqlite3 -csv -header test.sqlite "SELECT * FROM test"
col1,col2,col3
a,1,2.6
b,2,5.4
Run Code Online (Sandbox Code Playgroud)

bash io-redirection shell-script csv sqlite

3
推荐指数
1
解决办法
220
查看次数

SQLite 命令行:如何将输出通过管道传输到 UNIX 实用程序?

其命令行客户端的SQLite 文档表明它可以通过 UNIX 实用程序过滤 SQLite 查询的输出:

默认输出模式是“列表”。
[...]
当您要将查询的输出发送到另一个程序(例如 AWK)以进行额外处理时,列表模式特别有用。

在 SQLite 命令提示符下生成的输出示例

sqlite> select * from todos;
1|finish reading getting started section of the vim manual
2|finish app feature
Run Code Online (Sandbox Code Playgroud)

然后,如果我尝试向命令添加管道,我只会得到一个新提示

sqlite> select * from todos; | grep vim
...> 
Run Code Online (Sandbox Code Playgroud)

是否可以使用来自 SQLite 命令行的管道将输出发送到 unix 实用程序,或者是否只能在您实际编写 C 应用程序并使用 SQLite C 库时过滤 SQLite 输出?

pipe sqlite

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

更改 .sqlite_history 文件的位置

sqlite3将命令历史存储在 中.sqlite_history,默认情况下创建于:

$HOME/.sqlite_history
Run Code Online (Sandbox Code Playgroud)

如何将此位置更改为其他位置?

这是可能的,例如mysql,我可以在其中定义环境变量

MYSQL_HISTFILE=/path/to/whatever/file 
Run Code Online (Sandbox Code Playgroud)

但是我找不到任何相应的环境变量 sqlite3

export SQLITE_HISTFILE=/tmp/history 
Run Code Online (Sandbox Code Playgroud)

没有效果。我发现了一个帖子,其中有人问同样的问题,但没有有用的答案中给出。

environment-variables home sqlite

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

如何在shell脚本中编写sqlite命令?

我想编写一个shell脚本,首先打开sqlite,然后复制一个表,最后删除该表的内容。我怎样才能在 shell 脚本中做到这一点?

>>cd /var/www/dbs
>>sqlite3 ha.db
sqlite>>.timeout 2000
sqlite>>INSERT INTO table1 SELECT * FROM table2;
sqlite>>DELETE * FROM table2;
sqlite>>.quit
Run Code Online (Sandbox Code Playgroud)

这部分怎么写呢?

>>sqlite3 ha.db
sqlite>>INSERT INTO table1 ('a1','a2') VALUES ('1','2');
sqlite>>.quit
Run Code Online (Sandbox Code Playgroud)

scripting sqlite

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

sqlite3 命令行 - 如何一步设置模式和导入

我需要能够通过命令行一步完成此操作:

lab-1:/etc/scripts# sqlite3 test.db
SQLite version 3.8.10.2 2015-05-20 18:17:19
Enter ".help" for usage hints.
sqlite> .mode csv ;
sqlite> .import /tmp/test.csv users
sqlite> select * from users;
John,Doe,au,0,"",1,5555,91647fs59222,audio
sqlite> .quit
Run Code Online (Sandbox Code Playgroud)

我尝试了以下方法:

 lab-1:/etc/scripts# sqlite3 test.db ".mode csv ; .import /tmp/deleteme.csv users"
Run Code Online (Sandbox Code Playgroud)

 lab-1:/etc/scripts# sqlite3 test.db ".mode csv .import /tmp/deleteme.csv users"
Run Code Online (Sandbox Code Playgroud)

我没有收到错误,但我也没有在用户表中得到任何数据。

任何提示将不胜感激。

command-line csv sqlite

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