Prerequisites
1
|
pip install pandas click
|
Step to create a SQL insert generator using python
- Create data in excel file, we’ll create an example data
Sheet name : M_ACCOUNT
ID |
FULLNAME |
ADDRESS |
IDENTITY_NUMBER |
IDENTITY_TYPE |
COUNTRY |
1 |
John Doe |
Yogyakarta |
34754354986 |
KTP |
Indonesia |
2 |
Maverick |
Jakarta |
43589743545 |
KTP |
Indonesia |
3 |
Al Sah-Him |
Semarang |
58479846645 |
KTP |
Indonesia |
Sheet name : M_USER
ID |
USERNAME |
PASSWORD |
M_ACCOUNT_ID |
1 |
johndoe |
$2y$12$tRgbrmjdyytEyv8ceakIc.7vUCjLfpEi6K/Ube0hB5X4c7vPcMMQC |
1 |
2 |
maverick |
$2y$12$tRgbrmjdyytEyv8ceakIc.7vUCjLfpEi6K/Ube0hB5X4c7vPcMMQC |
2 |
3 |
alsahhim |
$2y$12$tRgbrmjdyytEyv8ceakIc.7vUCjLfpEi6K/Ube0hB5X4c7vPcMMQC |
3 |
- Create python file call
sql_generator.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
|
import click
import errno
import os
import pandas as pd
@click.command()
@click.option('--generate', '-g', help='Change TEXT to generate excel file into SQL insert')
@click.option('--outputdir', '-o', help='Change TEXT to create directory output file')
def main(generate, outputdir):
try:
# Validate generate file can not be None
if generate is None:
raise TypeError
# Check if outputdir is not None
if outputdir != None:
try:
# Create a directory
os.makedirs(outputdir)
outputdir = "{}/".format(outputdir)
except OSError as exc:
# If directory is exists use this directory
if exc.errno == errno.EEXIST:
outputdir = "{}/".format(outputdir)
file = pd.ExcelFile(generate)
for sheet_name in file.sheet_names:
data = file.parse(sheet_name)
filename = "{}{}.sql".format(outputdir, sheet_name)
click.echo("### {}:".format(filename))
write_file = open(filename, "w")
for i, _ in data.iterrows():
field_names = ", ".join(list(data.columns))
rows = list()
for column in data.columns:
rows.append(str(data[column][i]))
row_values = "'" + "', '".join(rows) + "'"
click.echo("INSERT INTO {} ({}) VALUES ({});".format(sheet_name, field_names, row_values))
write_file.write("INSERT INTO {} ({}) VALUES ({});\n".format(sheet_name, field_names, row_values))
write_file.close()
except TypeError as e:
click.echo("Error: Unknown generate file! Type -h for help.")
if __name__ == "__main__":
main()
|
This file will create command sql_generator.py --generate filename.xlsx --outputdir dir
Type sql_generator.py --help
to show help command
- Generator will be create a sql file according sheet name
File M_ACCOUNT.sql
1
2
3
|
INSERT INTO M_ACCOUNT (ID, FULLNAME, ADDRESS, IDENTITY_NUMBER, IDENTITY_TYPE, COUNTRY) VALUES ('1', 'John Doe', 'Yogyakarta', '34754354986', 'KTP', 'Indonesia');
INSERT INTO M_ACCOUNT (ID, FULLNAME, ADDRESS, IDENTITY_NUMBER, IDENTITY_TYPE, COUNTRY) VALUES ('2', 'Maverick', 'Jakarta', '43589743545', 'KTP', 'Indonesia');
INSERT INTO M_ACCOUNT (ID, FULLNAME, ADDRESS, IDENTITY_NUMBER, IDENTITY_TYPE, COUNTRY) VALUES ('3', 'Al Sah-Him', 'Semarang', '58479846645', 'KTP', 'Indonesia');
|
File M_USER.sql
1
2
3
|
INSERT INTO M_USER (ID, USERNAME, PASSWORD, M_ACCOUNT_ID) VALUES ('1', 'johndoe', '$2y$12$tRgbrmjdyytEyv8ceakIc.7vUCjLfpEi6K/Ube0hB5X4c7vPcMMQC', '1');
INSERT INTO M_USER (ID, USERNAME, PASSWORD, M_ACCOUNT_ID) VALUES ('2', 'maverick', '$2y$12$tRgbrmjdyytEyv8ceakIc.7vUCjLfpEi6K/Ube0hB5X4c7vPcMMQC', '2');
INSERT INTO M_USER (ID, USERNAME, PASSWORD, M_ACCOUNT_ID) VALUES ('3', 'alsahhim', '$2y$12$tRgbrmjdyytEyv8ceakIc.7vUCjLfpEi6K/Ube0hB5X4c7vPcMMQC', '3');
|
Thankyou
codeburst.io - Building Beautiful Command Line Interfaces with Python
$ click_ - Commands and Groups