使用 bash 脚本将多行插入到 sqlite 列中

使用 bash 脚本将多行插入到 sqlite 列中

我正在尝试将一个由多行和特殊字符组成的值插入到我的 sqlite DB 中。

例如:

{
"foo"="$BAR"
}

我一直在使用 sqlite3 命令,但我不知道如何输入它。

另外,在我的 bash 脚本中,我也有类似$BAR的需要解析的变量。

更新的命令(带有示例变量。)

API=2039470928570983
USERNAME=Admin
PASSWORD=PASSWORD
sqlite3 /home/xbmc/test.db "INSERT INTO DownloadClients VALUES (1,1,Sabnzbd,Sabnzbd,'{"host": "localhost", "port": 8085, "apiKey": "$API", "username": "$USERNAME", "password": "$PASSWORD", "tvCategory": "tv", "recentTvPriority": 1, "olderTvPriority": -100, "useSsl": false}', SabnzbdSettings)"

我现在明白了,Error: no such column: Sabnzbd我确实尝试在 VALUES 运算符之前列出列名,但是出现了同样的错误。

答案1

不久前我在互联网上的某个地方找到了这个解决方案:

sqlite3 $database <<EOF
ATTACH DATABASE "${example_db}" AS ref;
YOUR MULTILINE
SQLITE STATEMENT;
CREATE TEMPORARY TABLE...;
TEMPORARY TABLE STILL THERE;
EOF

不确定执行多个 SELECT 语句时会发生什么。

答案2

尝试一下

sqlite3 test.db "INSERT INTO table VALUES (1,1,Sabnzbd,Sabnzbd,q'{"host": "localhost", "port": 8085, "apiKey": "$API", "username": "$USERNAME", "password": "$PASSWORD", "tvCategory": "tv", "recentTvPriority": 1, "olderTvPriority": -100, "useSsl": false}', SabnzbdSettings)"

这样,您将获得 $VARIABLES 来在查询中呈现,如果 {} 仍然抛出错误,您将需要想办法转义您尝试插入的这个 json 字符串。

答案3

整个字符串必须用双引号引起来。" 值必须用单引号引起来。'

sqlite3 /home/xbmc/test.db "INSERT INTO DownloadClients VALUES (NULL,'$USERNAME','Three','Four','{"host": "localhost", "port": 8085, "apiKey": "$API", "username": "$USERNAME", "password": "$PASSWORD", "tvCategory": "tv", "recentTvPriority": 1, "olderTvPriority": -100, "useSsl": false}', 5)"

相关内容