No description
Find a file
2025-04-06 21:33:54 +09:00
demo use template 2023-12-18 19:58:57 +09:00
src use col name in select query 2025-04-06 21:15:59 +09:00
tests remove read password 2023-11-14 20:20:30 +09:00
.gitignore nimble init 2021-04-03 12:05:34 +09:00
csv2dbsrc.nimble v0.5.3 2025-04-06 21:33:22 +09:00
LICENSE Initial commit 2021-04-03 11:29:28 +09:00
README.md update README, test1 2023-01-22 17:00:42 +09:00

csv2db nimble

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!