sqlite 避免消息“- -从. sqlitric加载资源”

2ul0zpep  于 2023-01-17  发布在  SQLite
关注(0)|答案(6)|浏览(146)

小问题,但令人恼火:是否有办法避免每次查询时出现以下消息:
--从/Users/ThG/. sqlitric加载资源

sqougxex

sqougxex1#

我知道这个问题现在已经很老了,但是简单地删除'/Users/ThG/.sqliterc'应该可以解决这个问题。'.sqliterc'是sqlite的交互式命令行前端的配置文件。如果你不花很多时间在那里,你不会错过这个文件。

2vuwiymt

2vuwiymt2#

该资源msg出现在stderr上,后面跟着一个空行,因此可以使用如下代码将其删除( Package 在自己的脚本文件中):

#!/bin/bash
sqlite3 -init /your/init/file /your/sqlite3/file.db "
    your
    SQL
    cmds
" 2>/dev/null | sed -e1d
snz8szmq

snz8szmq3#

当在shell脚本中使用sqlite时,你通常根本不想加载你的~/.sqliterc

sqlite3 -init <(echo)

说明:

  • -init指定要加载的文件,而不是~/.sqliterc
  • <(echo)使用Process Substitution提供临时空文件的路径。
htrmnn0y

htrmnn0y4#

有点晚了,但是@levant pied几乎有了解决方案,你需要传递一个额外的-interactive来静音--加载资源。

$ sqlite3 -batch -interactive
SQLite version 3.31.1 2020-01-27 19:55:54
Enter ".help" for usage hints.
sqlite> .q
gblwokeq

gblwokeq5#

你可以简单地重命名你的配置文件来禁用警告。并在使用后恢复重命名以保留配置。
我使用以下代码:

#suppress default configuration warnings
mv $HOME/.sqliterc $HOME/.backup.sqliterc 

# sqlite3 scripts...

#revert
mv $HOME/.backup.sqliterc $HOME/.sqliterc
jjjwad0x

jjjwad0x6#

作为一个愚蠢的变通方案,以下方法有效:

<. sqlite your_sqlite.db 'select * from your_table'

这是因为当前代码执行以下操作:

if( stdin_is_interactive ){
   utf8_printf(stderr,"-- Loading resources from %s\n",sqliterc);
 }

强制标准输入重定向会阻止这一点,原因是以下代码:

stdin_is_interactive = isatty(0);

这同样适用:

sqlite -batch your_sqlite.db 'select * from your_table'

因为这段代码:

}else if( strcmp(z,"-batch")==0 ){
  /* Need to check for batch mode here to so we can avoid printing
  ** informational messages (like from process_sqliterc) before
  ** we do the actual processing of arguments later in a second pass.
  */
  stdin_is_interactive = 0;
}

但它太长了,有点违背初衷

相关问题