GNU Recutils – Tools and libraries to access plain-text databases
gnu.org
gnu.org
I don't feel so bad about our GNU Octave logo now.
I think its real competition is SQLLite and JSON / YAML, and it definitely has some benefits over the text formats, it can't compare with SQLLite.
The rec format is interesting because it is a specification for what others have used before without one. It seems quite readable and does not suffer from the ",,,,,," problem of CSV.
[1] Here's the list of ones I have run into so far:
* https://github.com/harelba/q
* https://github.com/tobimensch/termsql
* https://github.com/samuel/squawk
* https://github.com/tjunier/sqawk
I've also written one: https://github.com/dbohdan/sqawk. It turned out I wasn't the only one to come up with the name.
Presumes everything is relational? I notice the mention of 'advanced database' technology joins, and then I notice this example:
$ recsel -e "Dob >> '31 July 1994' && Dob << '01 August 1998'" -p Name,Email acquaintances.rec
So yeah, I sort of agree, what is the standard unified search language? Is it as easy to learn, use as SQL?"can't compare with SQLLite."
I'd agree with you on JSON/YAML but SQLLite does one thing each of these format/tools do not, converts "readable" text to binary. Text is good for smaller, less structured data. There maybe good reasons to not want it locked up.
There is one area I didn't see in the docs that would make SQLLite to be really useful. A two-way bridge allowing an export/import of the recutils formats allowing both search via SQL, yet maintaining the text format data.
http://binarylog.net/code/password-manager-recutils-tutorial...
I foresee many more usecases for recutils in my day-to-day life.
And in fact, it is working fine. I took the example from https://www.gnu.org/software/recutils/manual/recutils.html#A... and exchanged Emacs with Ämacs, and the selector works
~$ recsel -e "Title ~ '.*Ämacs.*'" -P Title books.rec
GNU Ämacs ManualInteresting format, though, with some definite benefits over other text storage formats.
echo "\"country\",population\nÖsterreich,8.58" | csv2rec --strict | rec2csv
works as expected. Somewhat worryingly, the format specification does not say anything about \0. I'd rather see use of \0 explicitly prohibited.I have found one place where the field name rule may not be enforced properly. It appears that csv2rec will use a noncompliant column name from a CSV file header as a key even in strict mode; however, rec2csv or relset will not accept the output it generates as input. I.e.,
echo "Österreich_population\n8.58" | csv2rec --strict | rec2csv
blows up on rec2csv rather than on csv2rec (which is what I think should happen).[1] http://www.gnu.org/software/recutils/manual/recutils.html#Th...