【问题标题】:sqlite3 output with tabs from one line commandsqlite3 输出,带有来自一行命令的选项卡
【发布时间】:2011-07-01 12:25:01
【问题描述】:

我想让我的 sqlite3 输出由制表符分隔。 -column 选项不适合我,因为带有空格的单独记录和我的值有空格但没有制表符。

如果我以交互方式使用 sqlite3,我可以使用 .mode tab。单行命令有选项 -separator 但我不知道如何在此处添加一个选项卡,该选项卡被解释为选项卡而不是文字(可能带有 ASCII 代码?)

有什么建议吗?我发现的所有谷歌示例都是针对交互式 sqlite3 的。

目前我正在使用蛮力方法:

sqlite3 -header mydb "select * from table1" | tr \| '\t' > myoutput

【问题讨论】:

  • 我找到了一种将选项卡添加到-separator选项的方法:control-v选项卡(用单引号括起来)
  • 请把您的自我评论改写为答案(并在大约 2 天后接受它,这将允许您接受自我回答),所以很明显问题已经解决了,以及如何解决任何人谁面临类似的问题并寻求解决方案。谢谢。
  • @jan,谢谢,我可以将我的评论作为答案,但问题是我不喜欢这个解决方案(tr 都不喜欢)。我对代码的可重用性和可维护性有强烈的看法,所以我不喜欢在命令行中明确区分空格和制表符的任何代码。目前我会等待更好的解决方案。

标签: sqlite


【解决方案1】:

这应该可行:

sqlite3 -separator $'\t' -header mydb "select * from table1"

$ 告诉你的 shell 扩展为一个制表符。

【讨论】:

  • +1 这比我的解决方案要好,谢谢。如果您不介意,我现在会等待其他答案。
【解决方案2】:

在 shell 脚本(例如)中使用 sqlite 时,您可以直接使用 .mode tab,方法是使用如下文档:

sqlite3 -header mydb <<EOF
.mode tabs
select * from table1;
EOF

【讨论】:

    【解决方案3】:

    这适用于 Linux 和 Windows:

    sqlite3 -header -cmd ".mode tabs" mydb "select * from table1"
    

    【讨论】:

      猜你喜欢
      • 2019-02-02
      • 1970-01-01
      • 1970-01-01
      • 2014-05-28
      • 2011-09-17
      • 2014-02-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多