csvDB
A SQL engine for CSV files
csvdb is an SQL engine for csv (comma separated values) and Apache web server log files, allowing files to be searched as if they were database tables.
Read the Full Documentation for csvDB
CHANGES: 0.1 - initial release 0.2 - bugfix to arrow key handling in shell - added support for loading apache log file with APACHE keyword - added INSERT - added UPDATE - added CREATE TABLE - added OUTFILE support - bugfix in WHERE parsing - added some query optimisation 0.2.1 - bugfix in file loading - added DELETE 0.3 - implemented autotools build chain - increased file loading speed - implemented readline based shell - added table/file/column/keyword autocompletion to shell - changes to table and result datastructures - major query optimisations - added AND/OR support to WHERE - expanded WHERE to support =,LIKE,>,<,NOT,<=,>= comparisons - implemented HAVING big thanks to hroptatyr for autotools and readline patches 0.3.1 - bugfix to COUNT(*) to stop table rows going missing - added support for dynamic columns in ORDER and HAVING - bugfix to LIMIT OFFSET - improved output format of csvdb_print_result - added LICENSE to make dist 0.3.2 - improved compatibility with mingw for windows builds (hroptatyr) - bugfix in delete to stop supposedly undeleted table rows going missing - implemented sub squeries 0.4 - added ALTER TABLE support - added JOIN support - added some config settings with SET- more query optimisations to create and insert - updates to result formatting - added new column/table reference resolvers - implemented column = column comparisons in where - bugfix to result_free with subqueries
> 0.3
<= 0.3



Like my software? PLEASE DONATE so I can keep working on it.
Download: csvdb source
A little about speed, I regularly test csvdb using a fairly large apache log file
- The file is loaded into a table with around 162000 rows in about a second
- Running "SELECT *,COUNT(IPaddress) AS count FROM log GROUP BY IPaddress HAVING count > 10 ORDER BY count AS INT LIMIT 5;" on that table gives a query time of just under 219 seconds (3.6 minutes)
- Running "SELECT IPaddress,url FROM log WHERE url LIKE '%csvdb-0%';" on that table gives a query time of 0.114 seconds

![[FSF Associate Member]](http://static.fsf.org/nosvn/associate/fsf-10005.png)
