Comments 43
Снимаю шляпу.
+12
Ух ты=) у меня как раз сейчас лабораторная — надо написать небольшую базу данных… ограничений по языку нет, что мне скажет преподаватель на БД на Баше?
+4
Скорее всего «Я тоже читаю хабру — не ленитесь сделать сами лабораторную!»
+26
Хм. Если препод понимающий, то, думаю, оценит)
У меня только базовые возможности, думаю если написать «нормальную» реляционную базу, будет очень жестоко)
У меня только базовые возможности, думаю если написать «нормальную» реляционную базу, будет очень жестоко)
0
Жестоко по отношению к кому?
Если вы написали ЭТО for fun, то оно вам в удовольствие.
Если вы написали ЭТО for fun, то оно вам в удовольствие.
0
Жестоко к преподу. Согласитесь, баш далеко не удобочитаемый язык, а база данных на нем..)
0
Даже не так синтаксис, а учитывая использование разных утилит, у каждой из которых свой синтаксис, регекспы и т.д.
0
Brainfuck Вам в руки :)
0
Месье знает толк в извращениях!
+1
Э… Оно журнал ведёт? Репликация есть? Кластер?
+4
Спасибо!!!
Как раз для домашних/бытовых потребностей нужно было что-то подобное.
Как раз для домашних/бытовых потребностей нужно было что-то подобное.
+1
А как вы сделали форматирование с подсветкой кода здесь? dl.dropbox.com/u/3926517/habr/tbdb.html
0
нагуглил highlight.hohli.com/
+1
Ждем свою базу данных на своих батниках.
+4
«Команда», какая комманда, вы что?
+1
Когда то пытался написать что то подобное для простенького биллинга. Посмотрим может получится использовать ваши наработки. Если конечно вы не против? =Р
0
Вы, конечно, молодец. Попробую ваш скрипт.
А чем не угодил SQLite?
А чем не угодил SQLite?
0
ошибки в примерах статьи
Комманда 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
дальше не ковырял
+2
я обычно так определяю имя файла
echo "Usage: `basename $0` DBFILE.txt select.."
+1
Индексы есть? Данные с пробелами и кавычками внутри поддерживаются? Ошибки записи обрабатываются?
Код кстати абсолютно нечитабелен.
Код кстати абсолютно нечитабелен.
-1
Индексы есть?
Индексы это номера строк. Грубо говоря)
Данные с пробелами и кавычками внутри поддерживаются?
Для этого есть поддержка base64
Ошибки записи обрабатываются?
Нет
Код кстати абсолютно нечитабелен.
Согласен
Индексы это номера строк. Грубо говоря)
Данные с пробелами и кавычками внутри поддерживаются?
Для этого есть поддержка base64
Ошибки записи обрабатываются?
Нет
Код кстати абсолютно нечитабелен.
Согласен
+1
код хорошо подсвечен, не надо тут ляля!
+1
Вы бы ещё спросили про транзакции и хранимые процедуры, шутник.
0
Круто!
Кроме шуток, идея реально же оригинальная.
Если проверить Яндексом запрос типа «sql bash», то ничего умного по этой теме не найдём, только весёлое:
«кто-нибудь знает как загнать значение переменную, получено из командной строки в базу SQL»
«Кто нибудь знает как запихнуть в беш скрипт sql запрос»
Кроме шуток, идея реально же оригинальная.
Если проверить Яндексом запрос типа «sql bash», то ничего умного по этой теме не найдём, только весёлое:
«кто-нибудь знает как загнать значение переменную, получено из командной строки в базу SQL»
«Кто нибудь знает как запихнуть в беш скрипт sql запрос»
+1
karpenko.biz/sql.html
Примерно так
Примерно так
0
Даешь ядро на баше! И хардварный интепретатор!
+2
Бенчмарки есть? Поддержка update планируется? Как обстоят дела с нативной версией под виндоус, порт будет? Безумные программисты заинтересованы в подобных проектах!
+1
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 и добавьте к имени файла. Представьте, что будет, если несколько человек на сервере будут использовать Вашу БД одновременно :). А лучше вообще найти способ как-то блокировать файл базы данных, чтобы к нему не было параллельных обращений.
0
Привет!
Делал нечто подобное тоже в shell bash
привожу дамп pipiska.db:
1|MTIzCg==
2|MzIxCg==
и тд
Индексы строго предопределены, так как по ним велась выборка данных из бд.
Но таки потом стало ясно, охватил кучу минусов в работе, уж лучше SQLite или MySQL(предпочтительней)
Мы не одни :)
Делал нечто подобное тоже в shell bash
привожу дамп pipiska.db:
1|MTIzCg==
2|MzIxCg==
и тд
Индексы строго предопределены, так как по ним велась выборка данных из бд.
Но таки потом стало ясно, охватил кучу минусов в работе, уж лучше SQLite или MySQL(предпочтительней)
Мы не одни :)
0
А хде update?? Delete+Insert не спортивно…
0
Sign up to leave a comment.
TBDB, или пишем базу данных на BASH