我正在尝试将一个由多行和特殊字符组成的值插入到我的 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)"