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


Comments to sqlite3 + shell это просто

  • #!/usr/bin/env bash
    Раз уж такая пьянка.

    Глеб 10.03.2014 12:11 Ответить

Leave a Comment

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Загрузка...
Menu Title