Как создать базу данных с возможностью поиска?

#database #search #command-line

#База данных #Поиск #командная строка

Вопрос:

Я хотел бы создать (или использовать, если таковая уже существует) приложение на основе командной строки, которое создает, изменяет и выполняет поиск в базе данных.

В идеале эта база данных должна представлять собой простой текстовый файл, где каждая строка является записью.

Как в этом простом примере:

 Apple    Fruit    Malus              Green/Red      55
Banana   Fruit    Musa acuminata     Yellow         68
Carrot   Veget.   D. carota          Orange         35
  

Допустим, этот текст хранится в ~/database.txt

Я хотел бы иметь возможность выполнять поиск по всем записям типа fruit (возвращающий, Apple и Banana ) или по всем записям, в которых количество килокалорий меньше, чем 60 (возвращающий Apple и Carrot ) в командной строке.

Возврат должен происходить через стандартный вывод терминала и должен выглядеть следующим образом:

 $mydatabasesearch cal '<60'

Apple    Fruit    Malus              Green/Red      55
Carrot   Veget.   D. carota          Orange         35
  

Кроме того, возможность добавления в базу данных через командную строку была бы потрясающей!

Есть ли что-нибудь, что делает это? Если нет, то как бы вы порекомендовали мне написать такое приложение? Я немного знаю C , но это все…

Ответ №1:

Взгляните на sqlite. Это немного сложнее, чем обычные текстовые файлы, но намного мощнее.

Ответ №2:

Обычные текстовые файлы на самом деле не считаются базами данных.

Если вы хотите придерживаться текстовых файлов и командной строки, взгляните на обычные утилиты unix, такие как grep , awk и пакет coreutils ( cat , cut , uniq , …), которые работают с текстовыми файлами. Добавьте эти команды в shellscript, и все готово.

Как только вы перейдете на какую-либо систему баз данных, у вас больше не будет текстовых файлов в качестве хранилища.

Помимо уже упомянутого sqlite, на библиотеку Berkeley DB также стоит обратить внимание, если вы хотите написать свою собственную программу. Обе библиотеки должны быть хороши в вашем случае, поскольку для них не требуется внешний сервер базы данных (например, mysql)

Ответ №3:

Вы можете сделать это в Unix в любом случае с помощью файла SED с разделителями и, возможно, какой-нибудь простой командной строки perl, которую вы можете обернуть в скрипт bash. В wikibooks есть хорошее руководство по работе с данными, и SED, который вы могли бы использовать, вероятно, есть здесь и во второй части руководства.