A CLI tool to csv import to database along directory.
go get -u github.com/sanshirookazaki/csv2sql
$ csv2sql [OPTIONS] [CSV_DIR]
OPTIONS:
    -d string
        Name of Database (default: "")
    -h string
        Host of Database (default: "127.0.0.1")
    -P int
        Database port number (default: 3306)
    -u string
        Database user (default: "root")
    -p string
        Database password (default: "")
    -S string
        Import specific tables (default: "")
    -n string
        Newline code (default: "\n")
    -N bool
        If csv value is empty, set null (default: false)
    -s bool
        Separate CSV into 2 types. (default: false)
        if the first charactor in file name is not number, then add file name to table name
    -i bool
        Ignore 1st line when import in CSV (default: false)
    -a bool
        Auto completion with file name when lack of csv columns (default: false)
    -sn int
        convert columns into snakecase (default: 0)
            0: Do nothing
            1: Snakecase      (e.g. "testUser123Id" -> "test_user_123_id")
            2: Ignore number  (e.g. "testUser123Id" -> "test_user123_id")
    -dry-run bool
        dry run (default: false)
    -f bool
        Force run: ignore error (default: false)
Case1:
$ csv2sql -d todo -i ./examples
CSV files import to database, then table will be along directory.
file                  -> table
-----------------------------------------
examples
├── user
│   ├── 1.csv         -> user
│   ├── detail.csv    -> detail
│   └── task
│       ├── 1.csv     -> user_task
│       └── 2.csv     -> user_task
└── user.csv          -> examples
Case2:
$ csv2sql -d todo -i -s ./examples
option "-s", works as follows
file                  -> table
-----------------------------------------
examples
├── user
│   ├── 1.csv         -> user
│   ├── detail.csv    -> user_detail
│   └── task
│       ├── 1.csv     -> user_task
│       └── 2.csv     -> user_task
└── user.csv          -> user
Case3:
$ csv2sql -d todo -i -S user/task ./examples
option "-S", csv path filtering
file                  -> table
-----------------------------------------
examples
├── user
│   ├── 1.csv
│   ├── detail.csv
│   └── task
│       ├── 1.csv     -> user_task
│       └── 2.csv     -> user_task
└── user.csv
Case4:
option "-a", auto compretion with file name.
e.g. examples/user/task/1.csv
id,task
1,homework
result is follow. user_id is complemented by file name "1" (1.csv).
+----+---------+----------+
| id | user_id | task     |
+----+---------+----------+
|  1 |       1 | homework |
+----+---------+----------+
docker pull 346o/csv2sql
docker run -v $PWD/examples:/tmp --rm --network host 346o/csv2sql -d todo -i /tmp