LINUX.ORG.RU

Оптимизация sqlite в bash.


0

1

В скрипте работаю с бд sqlite вызывая его множество раз:

sqlite3 db.sqlite «select * from test»

Определил что на это тратится довольно много времени, может кто знает как открыть базу один раз, а затем работать с ней через через stdin / stdout ?


Если все же только bash, то

man bash
/Coprocesses

sdio ★★★★★
()

Какое жуткое неосиляторство ruby!

babusha
()

У меня скрипты такие: cat << EOF | sqlite3 omsk.db BEGIN TRANSACTION; DROP TABLE postr; CREATE TABLE postr( idx, m_plus, m_minus ); INSERT INTO «postr» VALUES( 6, 11, 12 ); INSERT INTO «postr» VALUES( 7, 13, 14 ); -- COMMIT; EOF

sigurd ★★★★★
()
Ответ на: комментарий от sigurd

Блин - форматирование!
#!/bin/sh
cat << EOF | sqlite3 omsk.db
BEGIN TRANSACTION;
DROP TABLE postr;
CREATE TABLE postr( idx, m_plus, m_minus );
--
INSERT INTO «postr» VALUES( 6, 11, 12 );
INSERT INTO «postr» VALUES( 7, 13, 14 );
--
COMMIT;
EOF

sigurd ★★★★★
()
Ответ на: комментарий от true_admin

Да какая разница. Откуда вообще эта традиция на капслок? Со времен монохроматических мониторов? Если есть подсветка синтаксиса, этот капслок только режет глаза, впрочем, как и любой другой капслок.

dizza ★★★★★
()
Ответ на: комментарий от dizza

Откуда вообще эта традиция на капслок?

Я пишу sql-код в капслоке чтобы отделить его от «нормального кода», это удобно. Вернее, писал, щас больше с orm колупаюсь.

Короче, мне глаз не режет :)

true_admin ★★★★★
()

Решено:

Нашел такое решение, это всего лишь пример, пилить по вкусу...

#Открываем базу:
coproc sqlite3 test.sqlite


#Запрос без ответа:
echo "CREATE TABLE test (id INTEGER, text TEXT);" >&${COPROC[1]}
echo "INSERT INTO test (id,text) VALUES(1,one);" >&${COPROC[1]}


#Запрос с ответом, должна быть одна строка!!!
echo "SELECT text FROM ok WHERE text='one' LIMIT 1;" >&${COPROC[1]}
read res <&${COPROC[0]}
echo $res


#Пид sqlite хранится в $COPROC_PID, например можно его пришибить в конце
kill $COPROC_PID

Вот, а вы тут ;№%:? мереетесь )))

ganzzz
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.