csv2dbsrc
create db util sources from csv
Summary
| Latest Version | Unknown |
|---|---|
| License | MIT |
| CI Status | Failing |
| Downloads | 0 |
| Last Indexed | 2026-07-21 05:24 |
Tags
Installation
nimble install csv2dbsrc
choosenim install csv2dbsrc
git clone https://github.com/z-kk/csv2dbsrc
OS Compatibility
| Platform | Linux | macOS | Windows | FreeBSD | OpenBSD | NetBSD | Android | iOS | WASM | Embedded |
|---|---|---|---|---|---|---|---|---|---|---|
| csv2dbsrc | ✓ | ✓ | ✓ | - | - | - | - | - | - | - |
Source
| Repository | https://github.com/z-kk/csv2dbsrc |
|---|---|
| Homepage | https://github.com/z-kk/csv2dbsrc |
| Registry Source | nimble_official |
README
csv2db 
create db util source from csv
How to use csv2dbsrc
Use in Nim project directory
first, exec csv2dbsrc
$ csv2dbsrc
select database type
1: sqlite
2: mysql
>> 1
input database file name
>> test.db
make database table csv referencing path/to/sample.csv
then copy and modify sample.csv in same directory.
the csv file name should be the table name.
sample.csv |name|comment|data_type|default_val|not_null|is_primary| ----|----|----|----|----|---- |id|user id|INTEGER||1|1| |user_name|user name|TEXT||1|| |address||TEXT|||| |tel||TEXT|'000-0000-0000'||| |group_id|user's group id|INTEGER|1|1|| |updated_at|updated date time|DATETIME|'9999-12-31'|1||
then exec csv2dbsrc again to make dbtables.nim and each tableName.nim file.
Made files usage
import dbtables in your own source.
openDb*
proc openDb*(): DbConn =
createTables*
proc createTables*(db: DbConn) =
exec createTableNameTable each tables.
type
TableNameCol* = enum
table column names.
TableNameTable* = object
table object.
setDataTableNameTable*
proc setDataTableNameTable*(data: var TableNameTable, colName, value: string) =
set value to TableNameTable object by string.
createTableNameTable*
proc createTableNameTable*(db: DbConn) =
exec create table if not exists table_name
tryInsertTableNameTable*
proc tryInsertTableNameTable*(db: DbConn, rowData: TestTableTable): int64 =
exec insert into table_name and return last_insert_rowid.
insertTableNameTable*
proc insertTableNameTable*(db: DbConn, rowData: TableNameTable) =
exec insert into table_name
insertTableNameTable*
proc insertTableNameTable*(db: DbConn, rowDataSeq: seq[TableNameTable]) =
exec insert into table_name for each rowData.
selectTableNameTable*
proc selectTableNameTable*(db: DbConn, whereStr = "", orderBy: seq[string], whereVals: varargs[string, `$`]): seq[TableNameTable] =
exec select * from table_name and return the result.
selectTableNameTable*
proc selectTestTableTable*(db: DbConn, whereStr = "", whereVals: varargs[string, `$`]): seq[TestTableTable] =
exec select * from table_name without order and return the result.
updateTableNameTable*
proc updateTableNameTable*(db: DbConn, rowData: TableNameTable) =
exec update table_name
rowData must be got by selectTableNameTable and table must have primary key.
updateTableNameTable*
proc updateTableNameTable*(db: DbConn, rowDataSeq: seq[TableNameTable]) =
exec update table_name for each rowData.
dumpTableNameTable*
proc dumpTableNameTable*(db: DbConn, dirName = "csv") =
make db table data csv.
insertCsvTableNameTable*
proc insertCsvTableNameTable*(db: DbConn, fileName: string) =
insert rows from fileName csv. this proc not check exists rows.
restoreTableNameTable*
proc restoreTableNameTable*(db: DbConn, dirName = "csv") =
drop table and make table by data csv.
Pull Request please
Test for mysql is not enough.
If you can use Japanese, please make pull request in Japanese!