@dertages

Как в Bash ответ в виде blob из sqlite3 сохранить в переменную?

В bash-скрипте на запрос в sqlite3
SELECT values FROM tables WHERE keyname='namefirst';

получаю ответ в виде двоичных данных.
Так как это поле типа BLOB и оно содержит 00h символы, возвращается только первый символ "{".
В HEX, соответственно, эта запись в базе имеет вид:
7B 00 22 00 6E 00 61 00 6D 00 65 00 22 00 3A 00 22 00 6A 00 6F 00 68 00 6E 00 22 00 7D
, что соответствует
{�"�n�a�m�e�"�:�"�j�o�h�n�"�}

Не могу понять, как составить запрос или дальше обработать строку, чтобы получить нормальный ответ
{"name":"john"}
.
  • Вопрос задан
  • 178 просмотров
Пригласить эксперта
Ответы на вопрос 2
@texder
Вы не можете обработать строку, так как база у вас скорее всего в utf-8 (проверьте, наберите ".show"), а значение хранится в utf-16. На чистом баше сложно это сделать.
Как костыльный вариант, выводите (.mode quote), а затем конвертируйте через xxd
sqlite3 -quote $fileIn "SELECT values FROM tables WHERE keyname='namefirst'" | xxd -r -p > $fileOut
Ответ написан
Infra_HDC
@Infra_HDC
R2AMO
Я бы подумал насчет правильно настроить кодировки, collate или что-то там. Потому что это может быть банально двухбайтный юникод.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы