From ce5f63dd7f59ddcc3000bec8fcaa1b565b2280da Mon Sep 17 00:00:00 2001 From: 15309518018 <1143028552@qq.com> Date: Thu, 21 Mar 2024 17:12:54 +0800 Subject: [PATCH] xx --- README.md | 44 ++++++++ model.xltx | Bin 0 -> 14840 bytes requirements.txt | 4 + xls2ddl | 1 - xls2ddl.py | 67 +++++++++++ xlsxData.py | 287 +++++++++++++++++++++++++++++++++++++++++++++++ 6 files changed, 402 insertions(+), 1 deletion(-) create mode 100644 model.xltx create mode 100755 requirements.txt delete mode 160000 xls2ddl create mode 100755 xls2ddl.py create mode 100755 xlsxData.py diff --git a/README.md b/README.md index e69de29..72ec083 100644 --- a/README.md +++ b/README.md @@ -0,0 +1,44 @@ +# xls2ddl + +a tool to create related database schema from xlsx file + +there is a xlsx template file called "model.xlst" in this repo + +## How to use it + +1 double click "model.xlst" +2 in "sammary" datasheet, wirte the table name, table label, primary key +3 in "fields" datasheet, create all the field in the table +4 in "validation" datashhet identifies the index + first column is index name + second column choose the "idx" + thrid column for duplicatable index use "index:f1,f2 ..." or "unique:f1, f2, ..." for unique index + +5 save it with the tablenme as xlsx file's name +6 repeat 1 to 5 for all the table. +7 translates all xlsx file to ddl sql using +in the folder hold all the xlsx file + +for mysql +``` +python path/to/xls2ddl.py mysql . +``` +for sqlite3 +``` +python path/to/xls2ddl.py sqlite3 . +``` +for oracle +``` +python path/to/xls2ddl.py oracle . +``` +for postgresql +``` +python path/to/xls2ddl.py postgresql . +``` +for sqlserver +``` +python path/to/xls2ddl.py sqlserver . +``` + + + diff --git a/model.xltx b/model.xltx new file mode 100644 index 0000000000000000000000000000000000000000..6c3d6125906cdc4b9233ea3c37e65e453bc7dd26 GIT binary patch literal 14840 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: + ns[m[0]] = m[1] + else: + datafiles.append(a) + + ns = paramentHandle(ns) + for f in datafiles: + ext = os.path.splitext(f)[-1] + if ext in ['.xlsx','.xls' ]: + d = xlsxFactory(f) + data = d.read() + retData.update(data) + retData.update(ns) + print( dumps(retData)) +