【问题标题】:Redirect the query output to a text file with sqlite on windows?在 Windows 上使用 sqlite 将查询输出重定向到文本文件?
【发布时间】:2019-07-11 20:55:52
【问题描述】:

我在 Windows 中使用 Sqlite 进行一些查询(我以 sqlite3 mydb.db 执行它)但我无法重定向输出(我正在尝试像 .tables 这样的普通命令行方式进行操作 > @987654324 @) 因为 sqlite 在命令行下作为程序运行。

official sqlite web page 中有一个名为 Writting results to a file 的部分,但不能以我尝试的方式工作:

.tables .output new_db_output.txt

都没有

.tables | .output new_db_output.txt

有没有办法将输出保存到文件中?

注意:我使用的是 sqlite3 和 windows 7。

【问题讨论】:

    标签: database sqlite


    【解决方案1】:

    sqlite3命令行shell的点命令不能合并。

    .output 影响所有以下命令;只需提前执行:

    .output new_db_output.txt
    .tables
    .output
    

    【讨论】:

    • 谢谢,通过使用 .output 将所有后续查询重定向到一个文件,这正是我所需要的。 :)
    • 如果您只想让下一个命令转到文件,您可以使用.once 命令后跟文件名。这样您就不必再使用另一个 .output 命令来恢复输出到标准输出。
    【解决方案2】:

    从 SQLite 命令行界面外部

    如果您在 SQLite 的命令行界面之外工作:

    • 直接在系统终端(bash、PowerShell)中,
    • 或从某个脚本运行

    您可以使用传统的系统重定向和管道机制。

    sqlite3 database "SELECT * FROM table;" >  somefile
    sqlite3 database "SELECT * FROM table;" >> somefile
    sqlite3 database "SELECT * FROM table;" | tee somefile
    
    • 第一个示例使用 SQLite 输出创建一个新文件。
    • 第二个示例将输出附加到文件(如果存在)。
    • 在最后一个示例中,tee 将标准输出复制到somefile(类似于> 重定向)。 但是,您将在终端中看到输出。 请注意,tee 是一个 Unix/Linux 实用程序。

    一个额外的

    您可以使用命令 .mode 生成 CSV 文件。

    sqlite3 database ".mode csv" "SELECT * FROM table;" > somefile.csv
    

    或者带有标题(感谢@Mike Kelly)

    sqlite3 database ".mode csv" ".headers on" "SELECT * FROM table;" > somefile.csv
    

    【讨论】:

    • 谢谢.. 获取 CSV 输出标题的另一个选项: sqlite3 db.sqlite ".mode csv" ".headers on" "select * from ...;" > somefile.csv
    猜你喜欢
    • 2020-06-11
    • 2012-12-17
    • 2011-07-10
    • 2013-01-06
    • 2013-04-21
    • 2013-07-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多