Комментарии 43
Снимаю шляпу.
Ух ты=) у меня как раз сейчас лабораторная — надо написать небольшую базу данных… ограничений по языку нет, что мне скажет преподаватель на БД на Баше?
Скорее всего «Я тоже читаю хабру — не ленитесь сделать сами лабораторную!»
Хм. Если препод понимающий, то, думаю, оценит)
У меня только базовые возможности, думаю если написать «нормальную» реляционную базу, будет очень жестоко)
У меня только базовые возможности, думаю если написать «нормальную» реляционную базу, будет очень жестоко)
Жестоко по отношению к кому?
Если вы написали ЭТО for fun, то оно вам в удовольствие.
Если вы написали ЭТО for fun, то оно вам в удовольствие.
Жестоко к преподу. Согласитесь, баш далеко не удобочитаемый язык, а база данных на нем..)
Даже не так синтаксис, а учитывая использование разных утилит, у каждой из которых свой синтаксис, регекспы и т.д.
Brainfuck Вам в руки :)
Месье знает толк в извращениях!
Э… Оно журнал ведёт? Репликация есть? Кластер?
Спасибо!!!
Как раз для домашних/бытовых потребностей нужно было что-то подобное.
Как раз для домашних/бытовых потребностей нужно было что-то подобное.
А как вы сделали форматирование с подсветкой кода здесь? dl.dropbox.com/u/3926517/habr/tbdb.html
нагуглил highlight.hohli.com/
Ждем свою базу данных на своих батниках.
«Команда», какая комманда, вы что?
Когда то пытался написать что то подобное для простенького биллинга. Посмотрим может получится использовать ваши наработки. Если конечно вы не против? =Р
Вы, конечно, молодец. Попробую ваш скрипт.
А чем не угодил SQLite?
А чем не угодил SQLite?
ошибки в примерах статьи
Комманда insert:
./tbdb.sh DBFile field1 field2 field3
должна быть
./tbdb.sh DBFile insert field1 field2 field3
Комманда delete:
./tbdb.sh DBFile line 2
должна быть:
./tbdb.sh DBFile delete line 2
— ошибки при выполнении скрипта:
$ bash --version
GNU bash, Version 4.1.5(1)-release (x86_64-pc-linux-gnu)
$ ./tbdb.sh L insert 22 hal;
./tbdb.sh: Zeile 190: =: Kommando nicht gefunden.
./tbdb.sh: Zeile 192: [: -eq: Einstelliger (unärer) Operator erwartet.
./tbdb.sh: Zeile 192: [: -eq: Einstelliger (unärer) Operator erwartet.
$ cat L
22 hal
$ ./tbdb.sh L -n select 1 line 1
./tbdb.sh: Zeile 55: [: ==: Einstelliger (unärer) Operator erwartet.
./tbdb.sh: Zeile 79: [: -eq: Einstelliger (unärer) Operator erwartet.
./tbdb.sh: Zeile 79: [: -eq: Einstelliger (unärer) Operator erwartet.
./tbdb.sh: Zeile 79: [: -eq: Einstelliger (unärer) Operator erwartet.
./tbdb.sh: Zeile 79: [: -eq: Einstelliger (unärer) Operator erwartet.
./tbdb.sh: Zeile 79: [: -eq: Einstelliger (unärer) Operator erwartet.
./tbdb.sh: Zeile 79: [: -eq: Einstelliger (unärer) Operator erwartet.
./tbdb.sh: Zeile 79: [: -eq: Einstelliger (unärer) Operator erwartet.
./tbdb.sh: Zeile 79: [: -eq: Einstelliger (unärer) Operator erwartet.
./tbdb.sh: Zeile 79: [: -eq: Einstelliger (unärer) Operator erwartet.
./tbdb.sh: Zeile 79: [: -eq: Einstelliger (unärer) Operator erwartet.
./tbdb.sh: Zeile 79: [: -eq: Einstelliger (unärer) Operator erwartet.
22
./tbdb.sh: Zeile 188: [: ==: Einstelliger (unärer) Operator erwartet.
./tbdb.sh: Zeile 206: [: ==: Einstelliger (unärer) Operator erwartet.
$ # не хватает номеров строки
$ ./tbdb.sh L delete line 1
cat: testfile: No such file or directory
$ cat L
дальше не ковырял
Комманда insert:
./tbdb.sh DBFile field1 field2 field3
должна быть
./tbdb.sh DBFile insert field1 field2 field3
Комманда delete:
./tbdb.sh DBFile line 2
должна быть:
./tbdb.sh DBFile delete line 2
— ошибки при выполнении скрипта:
$ bash --version
GNU bash, Version 4.1.5(1)-release (x86_64-pc-linux-gnu)
$ ./tbdb.sh L insert 22 hal;
./tbdb.sh: Zeile 190: =: Kommando nicht gefunden.
./tbdb.sh: Zeile 192: [: -eq: Einstelliger (unärer) Operator erwartet.
./tbdb.sh: Zeile 192: [: -eq: Einstelliger (unärer) Operator erwartet.
$ cat L
22 hal
$ ./tbdb.sh L -n select 1 line 1
./tbdb.sh: Zeile 55: [: ==: Einstelliger (unärer) Operator erwartet.
./tbdb.sh: Zeile 79: [: -eq: Einstelliger (unärer) Operator erwartet.
./tbdb.sh: Zeile 79: [: -eq: Einstelliger (unärer) Operator erwartet.
./tbdb.sh: Zeile 79: [: -eq: Einstelliger (unärer) Operator erwartet.
./tbdb.sh: Zeile 79: [: -eq: Einstelliger (unärer) Operator erwartet.
./tbdb.sh: Zeile 79: [: -eq: Einstelliger (unärer) Operator erwartet.
./tbdb.sh: Zeile 79: [: -eq: Einstelliger (unärer) Operator erwartet.
./tbdb.sh: Zeile 79: [: -eq: Einstelliger (unärer) Operator erwartet.
./tbdb.sh: Zeile 79: [: -eq: Einstelliger (unärer) Operator erwartet.
./tbdb.sh: Zeile 79: [: -eq: Einstelliger (unärer) Operator erwartet.
./tbdb.sh: Zeile 79: [: -eq: Einstelliger (unärer) Operator erwartet.
./tbdb.sh: Zeile 79: [: -eq: Einstelliger (unärer) Operator erwartet.
22
./tbdb.sh: Zeile 188: [: ==: Einstelliger (unärer) Operator erwartet.
./tbdb.sh: Zeile 206: [: ==: Einstelliger (unärer) Operator erwartet.
$ # не хватает номеров строки
$ ./tbdb.sh L delete line 1
cat: testfile: No such file or directory
$ cat L
дальше не ковырял
я обычно так определяю имя файла
echo "Usage: `basename $0` DBFILE.txt select.."
Индексы есть? Данные с пробелами и кавычками внутри поддерживаются? Ошибки записи обрабатываются?
Код кстати абсолютно нечитабелен.
Код кстати абсолютно нечитабелен.
Индексы есть?
Индексы это номера строк. Грубо говоря)
Данные с пробелами и кавычками внутри поддерживаются?
Для этого есть поддержка base64
Ошибки записи обрабатываются?
Нет
Код кстати абсолютно нечитабелен.
Согласен
Индексы это номера строк. Грубо говоря)
Данные с пробелами и кавычками внутри поддерживаются?
Для этого есть поддержка base64
Ошибки записи обрабатываются?
Нет
Код кстати абсолютно нечитабелен.
Согласен
код хорошо подсвечен, не надо тут ляля!
Вы бы ещё спросили про транзакции и хранимые процедуры, шутник.
Круто!
Кроме шуток, идея реально же оригинальная.
Если проверить Яндексом запрос типа «sql bash», то ничего умного по этой теме не найдём, только весёлое:
«кто-нибудь знает как загнать значение переменную, получено из командной строки в базу SQL»
«Кто нибудь знает как запихнуть в беш скрипт sql запрос»
Кроме шуток, идея реально же оригинальная.
Если проверить Яндексом запрос типа «sql bash», то ничего умного по этой теме не найдём, только весёлое:
«кто-нибудь знает как загнать значение переменную, получено из командной строки в базу SQL»
«Кто нибудь знает как запихнуть в беш скрипт sql запрос»
karpenko.biz/sql.html
Примерно так
Примерно так
Даешь ядро на баше! И хардварный интепретатор!
Бенчмарки есть? Поддержка update планируется? Как обстоят дела с нативной версией под виндоус, порт будет? Безумные программисты заинтересованы в подобных проектах!
if [ $1 == "delete" ]; then
shift;
if [ $1 == "line" ]; then
shift;
cat -n $db | grep "^ *${1}" | sed "s/^ *${1}\t//" > /tmp/dbdelete
diff $db /tmp/dbdelete | grep "^<" | sed "s/< //" > /tmp/dbdelete2
cp /tmp/dbdelete2 $db
fi
fi
Аффтар, ну разве так можно… :(. Прочитайте хотя бы просто несколько байт из /dev/random и добавьте к имени файла. Представьте, что будет, если несколько человек на сервере будут использовать Вашу БД одновременно :). А лучше вообще найти способ как-то блокировать файл базы данных, чтобы к нему не было параллельных обращений.
Привет!
Делал нечто подобное тоже в shell bash
привожу дамп pipiska.db:
1|MTIzCg==
2|MzIxCg==
и тд
Индексы строго предопределены, так как по ним велась выборка данных из бд.
Но таки потом стало ясно, охватил кучу минусов в работе, уж лучше SQLite или MySQL(предпочтительней)
Мы не одни :)
Делал нечто подобное тоже в shell bash
привожу дамп pipiska.db:
1|MTIzCg==
2|MzIxCg==
и тд
Индексы строго предопределены, так как по ним велась выборка данных из бд.
Но таки потом стало ясно, охватил кучу минусов в работе, уж лучше SQLite или MySQL(предпочтительней)
Мы не одни :)
А хде update?? Delete+Insert не спортивно…
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
TBDB, или пишем базу данных на BASH