- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
sqlite3 的 .sqliterc 文件主要用于 .this 和 .that 风格的点命令,就像曾经流行的mysql输出模拟:
.header on
.timer on
.mode column
但是,您可以将任何您想要的 SQL 放入 .sqliterc。一旦你意识到 sqlite3 在默认情况下处理大型数据集时有多慢,你就会学习一些 PRAGMA 命令,这些命令可以让生活变得更好,比如 PRAGMA synchronous =关闭;
。
这些命令也可以放在您的 .sqliterc 中,如果您了解这些命令,那么将影响您使用命令行“sqlite3”工具所做的一切,无论是哪个数据库!就我而言,这很好。对于我在特定机器上使用的 Linux 帐户,我一直想要其中的一些 PRAGMA 设置。
但是,某些 PRAGMA 设置会产生确认输出,例如 yes
或 off
或 exclusive
或 memory
。当你做这样的事情时,这就成了一个问题,输出的那些额外的小词会被默默地包含在内:
echo "select * from blah;" | sqlite3 foo.db > output.txt
echo "select * from blah;" | sqlite3 foo.db | wc -l
如果您碰巧在 .sqliterc 中有 5 个 PRAGMA 语句,其中 2 个产生输出,则第二个示例 (wc -l
) 中的行数将减少 2,并且您的数据output.txt
中的内容并不完全符合您的预期。顺便说一下,那些额外的 2 行转到 stdout
,而不是 stderr
。
详细说明,使用包含以下内容的 .sqliterc 文件:
PRAGMA synchronous = OFF;
PRAGMA foreign_keys = ON;
PRAGMA journal_mode = MEMORY;
PRAGMA locking_mode = EXCLUSIVE;
PRAGMA cache_size = -500000;
一切正常,但你会得到这样的 SELECT 输出:
off
memory
2904|wan|1417737600|772|108243|0|1946|635589|0
2904|wan|1417737900|765|119478|0|1980|647472|0
2904|wan|1417738200|708|90934|0|1924|622615|0
2904|wan|1417738500|710|105128|0|1914|622634|0
而不是你想要的:
2904|wan|1417737600|772|108243|0|1946|635589|0
2904|wan|1417737900|765|119478|0|1980|647472|0
2904|wan|1417738200|708|90934|0|1924|622615|0
2904|wan|1417738500|710|105128|0|1914|622634|0
看出区别了吗?问题是:我们能否以某种方式让 .sqliterc 命令关闭,并停止打印某些污染我们的 stdout
的 PRAGMA 命令的结果?
最佳答案
答案是肯定的!至少这是我找到的最好的方法。
警告!这有点 hackish,并且隐藏了一些提醒“警告”,如果您首先执行将 PRAGMA 命令放入 .sqliterc 的非推荐做法,您可能会看到!
侧边栏:研究这个时,您可能会被 .echo on
和 .echo off
误导,但这并不能满足我们的要求。 Echo 默认是关闭的,没关系。 .echo
设置留给读者作为练习。
答案:使用 .output
设置。将 /dev/null
设置为所有命令的输出,然后在最后将输出设置回默认的 stdout
。 (或者使用 /tmp/somefile
或任何你想要的,如果你想要一些你垃圾的记录。)
修复了 .sqliterc
文件:
.output /dev/null
PRAGMA synchronous = OFF;
PRAGMA foreign_keys = ON;
PRAGMA journal_mode = MEMORY;
PRAGMA locking_mode = EXCLUSIVE;
PRAGMA cache_size = -500000;
.output stdout
现在您可以在输出“包装器”中包装任意数量的 .dot
和 PRAGMA
命令,并且您永远不会被它们无法控制的冗长所困扰!
附言作为奖励,你现在有我推荐的 5 条使用 sqlite3 的性能 PRAGMA 行,带有 Improve INSERT-per-second performance of SQLite? 的属性。 . (我的有 500 MB 缓存大小;调味。)
关于sqlite - 如何使 .sqliterc 命令安静,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27391557/
You can run gdb without printing the front material, which describes gdb's non-warranty, by specifyi
我有一个 ant 构建文件,它通常在完全不同的环境中运行。默认情况下,我正在寻找与使用相同的行为: ant -q 但是,由于某些团队成员的配置不同,因此在每个人的环境中指定 -q 选项并不容易以统一的
我正在使用一个存储库,其中包含许多使用 create-react-app 创建的 Node 包,所有这些都是由 CI 系统构建和测试的。每个包的构建/测试,使用 react-scripts build
我读过有关浮点的内容,并且了解 NaN 可能是由运算产生的。但我无法理解这些到底是什么概念。它们有什么区别? C++编程时可以生成哪一个?作为一名程序员,我可以编写一个导致 sNaN 的程序吗? 最佳
我是一名优秀的程序员,十分优秀!