Переменная JSON в Bash для SQLite - PullRequest
0 голосов
/ 22 января 2019

Я не могу понять это - выданный SQL-запрос недопустим

key="test"
payload=$(gzip -ckqd ./temp.json.gz | jq -c . | sed 's/"/\\"/g')

printf 'INSERT INTO my_table VALUES ("%s", "%s")' "$key" "$payload" | sqlite3 ./temp.db

Очевидно, что переменная $ payload представляет собой строку json (может иметь одинарные и двойные кавычки и т. Д.)

1 Ответ

0 голосов
/ 24 января 2019

В SQL строки разделяются не двойными, а одинарными кавычками.

Внутри строки единственным специальным символом является сама одинарная кавычка, и она должна быть экранирована не обратной косой чертой, адругая цитата:

... sed "s/'/''/g"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...