sqlite3 + shell это просто
sqlite3 and shell — simple and stupid
sqlite
sqlite или sqlite3 (последняя версия) — это легковесная реляционная база (ACID-совместимая) данных работающая из файла. Не работает по сети.
Совместима с стандартом SQL-92.
Она намного быстрее (в своём классе задач) mysql & postgresql.
Я бы рекомендовал её использовать во многих случаях вместо mysql & postgresql, например на личном блоге
Сама библиотека SQLite написана на C; существует большое количество привязок к другим языкам программирования, в том числе C++, Java, C#, VB.NET, Python, Perl, PHP, Tcl (средства для работы с Tcl включены в комплект поставки SQLite), Ruby, Haskell, Scheme, Smalltalk, Lua и Parser, а также ко многим другим. Полный список существующих средств размещён на странице проекта
Shell
shell — на английском, оболочка.
shell или оболочка операционной системы или интерпретатор команд операционной системы — взаимодействие между ОС и пользователем.
В общем с shell-ом надо говорить на языке командной оболочки.
Применение Shell+sqlite3, Shell + sqlite
Обычно надо откуда-то получить данные, их записать и обработать.
*Желательно что бы запись и изменение данных не конфликтовала между собой.
*Не хочется городить километры кода для простых вещей. Например не хочется писать свои или искать чужой код для чтения и записи в файл.
Вообще — применений просто масса.
bash
Как же встроить sqlite в скрипт на bash-интерпретаторе?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | #!/bin/bash # # test application by http://wel.org.ua # PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin sqlite3=`which sqlite3` DB_FILE=~/test.db SQLITE_OPTIONS=" -column -header " $sqlite3 $DB_FILE " create table IF NOT EXISTS test ( test TEXT UNIQUE, test2 TEXT);" if [ "$#" -lt 2 ];then echo "Введите пожалуйста 2-а аргумента, для того что бы внести их в базу данных $DB_FILE" exit 1 else $sqlite3 $DB_FILE " insert into test (test,test2) values ('"$1"', '"$2"')" #echo $error fi echo "Уже было внесено:" $sqlite3 $SQLITE_OPTIONS $DB_FILE <<EOF SELECT * FROM test; EOF exit 0 |
Выполнения кода:
Как видно скрипт не заработал с 1-м аргументом
# /test.sh 1
Введите пожалуйста 2-а аргумента, для того что бы внести их в базу данных /root/test.db
Скрипт заработал
#/test.sh 1 2
Уже было внесено:
1|2
SQLite сообщил, что Мы внесли нейникальное значение для индекса
# /test.sh 1 2
Error: column test is not unique
Уже было внесено:
1|2
Всё отлично )))
# /test.sh 2 3
Уже было внесено:
1|2
2|3