Hi all,
I am looking for a local database that is easily accessible via the command line.
It can be SQL or non-SQL
Whats my use case? I want to use it kinda like a second brain. A place to save my notes, my todo lists, my book reading lists, links / articles to read later, etc.
I want it to be a good CLI citizen so that I can script its commands to create simpler abstractions, rather than writing out the full queries every time.
Maybe sqlite is what I need, but is that ideal for my use case?
Edit: removed notes, as evidently they aren't suitable for this and aren't like the rest.
I wouldn't recommend a DB for note taking purpose. You can use Markdown with vim.
Perhaps I shouldn't have said note taking. But the rest still applies.
Is there a reason you're not looking at tools explicitly built for this like orgmode, obsidian, task-warrior, etc? There's a plethora of these tools and my experience with this is you really don't want to over-engineer your productivity suite.
That said, if you go the SQL route, sqlite is the way to go. Other SQL databases must be run as a daemon whereas sqlite operates on a local file directly.
However any SQL database isnt going to have the CLI youre asking for. Its interface is... SQL, so you're scripts are going to have a bunch of SQL code embedded that isnt easily reusable. A non-sql database will probably be better. I'm not familiar with them but I think there's some that store their data as text files in a folder which is organized a certain way. But that starts looking like the tools I mentioned before.
Task warrior was close to what I wanted. I forgot what it lacked when I tried it. I think it was dependent tasks or sub tasks? If not that, then a tag system with flexible querying. I want querying by tag, due date, and other attributes to be possible.
I think orgmode may be what I want, but the learning curve was discouraging. I was also discouraged about the possibility for myself to build extensions for it, for example to use on android. That would be easier with sql.
Obsidian is gui from my understanding, so it wouldn't fit what I'm looking for. I want something I can integrate with my scripts and other unix tools.
Yeah I only suggested obsidian because its so popular and is completely out-of-the-box.
If you want everything exactly as you want it you'll need to spend time coding it all yourself. Otherwise you're shopping around for different tools for specific things. Some editor plugin for notes. Another for tasks. Another for reminders etc.
My issue with task warrior was its syncing service
taskd
. It required that you generate a self signed ssl certificate. You couldn't host it behind caddy. But all the issues listed I'm pretty sure it covers. Its extremely robust.
Using a database for notes is like going 2km in a plane.
You can use any relational database for this though but why would you subject yourself to this?
I think you're right about notes, but what about the other use cases?
Obsidian has a huge number of plug-ins, that cover a wide range of uses. I also use Zettel Notes as a quick md file editor and that has the ability to capture pages in markdown to read later. And/or you can use Omnivore.
If you are generally interested in designing databases its a good exercise to try and build one yourself. That is the only situation I recommend you go this route
I want something I can use from the command line, so that I can integrate and interface it with other unix tools and scripts.
Oh wow that's pretty cool. From my understanding this is good for notes, but would it work for tasks / todos?
It has a huge number of plugins - this is a list of the productivity ones. You'd need to do some reading to see if it has what you require.
I think you would be better off using something like org-roam. It’s all text so script can still be used and it can be searched fast with ripgrep. Also org mode has loads of features that a homegrown system will never be able to catch up with
Joplin is a note taking app that stores its data in an sqlite database (easy to query but not a good idea to write to it) but there is also a command line version and both versions support access via a data API.
Joplin can do all that and has: Plugin support for nearly anything you want Runs on sqlite if you want to access the data direct Is 100% open source.
I think what I'm looking for doesn't exist, but what I meant by CLI is something I can pipe things into and interface with other unix tools easily.
But you're right, they all have a way to open a session via CLI.
Hey!
I’ve wanted something very similar—specifically, a plain-text database. I recently came across GNU recutils, which I haven’t had time to play around with yet, but which seems like it fits the bill (at least for me). There’s a couple YouTube videos on it—I encourage you to check it out!
take a look at Apache Ignite https://ignite.apache.org/docs/latest/tools/sqlline
there's also datafusion that lets you run SQL commands via CIL on CSV and JSON https://datafusion.apache.org/user-guide/cli/usage.html
Notes, Todo lists and links? A DB is not what you need.
These are all different concerns each with specialized software for them.
For todos and lists, I like tasks.org
For Notes and links, use a folder of markdown files, and an editor like Obsidian or Markor.