-
I took a look to see how this works, expecting a super-complex parser/compiler - and it's mainly some straight-forward regular expression replacements! https://github.com/dcmoura/spyql/blob/4b5ea3ff52875d2c1a544f...
I'm very impressed - this is some very neat pragmatic software design.
-
SaaSHub
SaaSHub - Software Alternatives and Reviews. SaaSHub helps you find the best software and product alternatives
-
I love this tool!
I use it every day to insert monitor data from Lunar (https://lunar.fyi) into The Monitor Database (https://db.lunar.fyi)
I also use it occasionaly to insert data from my Meilisearch instances into Postgres/SQLite for more accurate filtering when needed.
-
Nice work! I have a similar tool built on SQLite [0] and there are a number of similar tools (compared in my readme) like octosql, q, textql, datasette, etc.
Implementation-wise, is there a reason you wrote your own SQL parser rather than using an existing library? I ask not because I'd discourage handwritten SQL parsers but that I think the approach you took is going to suffer when it comes to error messages and lexical edge cases like `SELECT(SELECT 1)`.
But I can appreciate you wanting your own syntax especially for nested objects. In dsq I solved that by giving nested fields a literal column name with a dot in it. But that means you have to quote the column name (e.g. `SELECT "city.address" FROM {}`).
The additional penalty you'd pay not backing this by SQLite or DuckDB or some other in-memory database is in query performance as the input grows. Among other existing tools like this octosql has its own query engine but cube2222 has put a lot of time into optimizing it and it's also written in Go.
Whatever the case, competition is good! Happy to chat more if you want. I love database projects!
[0] https://github.com/multiprocessio/dsq
-
See also:
https://github.com/ponyorm/pony/
https://macropy3.readthedocs.io/en/latest/pinq.html#pinq
-
prosto
Prosto is a data processing toolkit radically changing how data is processed by heavily relying on functions and operations with functions - an alternative to map-reduce and join-groupby
Having Python expressions within a declarative language is a really good idea because we can combine low level logic of computations of values with high level logic of set processing.
A similar approach is implemented in the Prosto data processing toolkit:
https://github.com/asavinov/prosto
Although Prosto is viewed as an alternative to Map-Reduce by relying on functions, it also supports Python User-Defined Functions in its Column-SQL:
Related posts
-
Command-line data analytics made easy
-
The fastest command-line tools for querying large JSON datasets
-
I want to convert a large JSON file into Tabular Format.
-
The fastest tools for querying large JSON files (updated benchmark)
-
SPyQL - SQL with Python in the middle - Making command-line data processing more intuitive, readable and powerful