DDL parase and Convert to BigQuery JSON schema and DDL statements module, available in Python.
Features
DDL parse and get table schema information.
Currently, only the CREATE TABLE statement is supported.
Convert to BigQuery JSON schema and BigQuery DDL statements.
Supported databases are MySQL, PostgreSQL, Oracle, Redshift.
Requirement
Python >= 3.4
Installation
Install
pip install:
$ pip install ddlparse
command install:
$ python setup.py install
Update
pip update:
$ pip install ddlparse --upgrade
Usage
Example
from ddlparse.ddlparse import DdlParse
sample_ddl = """
CREATE TABLE My_Schema.Sample_Table (
Id integer PRIMARY KEY,
Name varchar(100) NOT NULL,
Total bigint NOT NULL,
Avg decimal(5,1) NOT NULL,
Created_At date, -- Oracle 'DATE' -> BigQuery 'DATETIME'
UNIQUE (NAME)
);
"""
# parse pattern (1-1)
table = DdlParse().parse(sample_ddl)
# parse pattern (1-2) : Specify source database
table = DdlParse().parse(ddl=sample_ddl, source_database=DdlParse.DATABASE.oracle)
# parse pattern (2-1)
parser = DdlParse(sample_ddl)
table = parser.parse()
print("* BigQuery Fields * : normal")
print(table.to_bigquery_fields())
# parse pattern (2-2) : Specify source database
parser = DdlParse(ddl=sample_ddl, source_database=DdlParse.DATABASE.oracle)
table = parser.parse()
# parse pattern (3-1)
parser = DdlParse()
parser.ddl = sample_ddl
table = parser.parse()
# parse pattern (3-2) : Specify source database
parser = DdlParse()
parser.source_database = DdlParse.DATABASE.oracle
parser.ddl = sample_ddl
table = parser.parse()
print("* BigQuery Fields * : Oracle")
print(table.to_bigquery_fields())
print("* TABLE *")
print("schema = {} : name = {} : is_temp = {}".format(table.schema, table.name, table.is_temp))
print("* BigQuery Fields *")
print(table.to_bigquery_fields())
print("* BigQuery Fields - column name to lower case / upper case *")
print(table.to_bigquery_fields(DdlParse.NAME_CASE.lower))
print(table.to_bigquery_fields(DdlParse.NAME_CASE.upper))
print("* COLUMN *")
for col in table.columns.values():
col_info = []
col_info.append("name = {}".format(col.name))
col_info.append("data_type = {}".format(col.data_type))
col_info.append("length = {}".format(col.length))
col_info.append("precision(=length) = {}".format(col.precision))
col_info.append("scale = {}".format(col.scale))
col_info.append("constraint = {}".format(col.constraint))
col_info.append("not_null = {}".format(col.not_null))
col_info.append("PK = {}".format(col.primary_key))
col_info.append("unique = {}".format(col.unique))
col_info.append("bq_data_type = {}".format(col.bigquery_data_type))
col_info.append("bq_legacy_data_type = {}".format(col.bigquery_legacy_data_type))
col_info.append("bq_standard_data_type = {}".format(col.bigquery_standard_data_type))
col_info.append("BQ {}".format(col.to_bigquery_field()))
print(" : ".join(col_info))
print("* DDL (CREATE TABLE) statements *")
print(table.to_bigquery_ddl())
print("* DDL (CREATE TABLE) statements - dataset name, table name and column name to lower case / upper case *")
print(table.to_bigquery_ddl(DdlParse.NAME_CASE.lower))
print(table.to_bigquery_ddl(DdlParse.NAME_CASE.upper))
print("* Get Column object (case insensitive) *")
print(table.columns["total"])
License
Links
Repository : https://github.com/shinichi-takii/ddlparse
PyPI Package : https://pypi.python.org/pypi/ddlparse
Special Thanks
pyparsing : http://pyparsing.wikispaces.com/
Release files for ddlparse 1.2.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| ddlparse-1.2.1.tar.gz | 14.4 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| ddlparse-1.2.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 23.1 kB
Release files / ddlparse-1.2.1.tar.gz
| Download URL | ddlparse-1.2.1.tar.gz |
|---|---|
| Size | 14.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
58d667b21f761f83b7d1e695c407e846c19dca1dbea172cea45a9b3b44c766bf
|
|
BLAKE2b-256 checksum How to use checksums |
b89b6c2603d13bda2ab38808f17c33dade754ba9c346eb047cda7f2202dc4037
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/1.12.1 pkginfo/1.5.0.1 requests/2.21.0 setuptools/40.6.3 requests-toolbelt/0.8.0 tqdm/4.30.0 CPython/3.6.3
|
Release files / ddlparse-1.2.1-py3-none-any.whl
| Download URL | ddlparse-1.2.1-py3-none-any.whl |
|---|---|
| Size | 8.7 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
3feca123d9c463f617d39605184d1ce329f3a1af8fa5a978f5ba20cf638e55fc
|
|
BLAKE2b-256 checksum How to use checksums |
aa6239bb52de236dde67edb2ec2634ec83436bbcadea9654c366a1927b2a4dde
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/1.12.1 pkginfo/1.5.0.1 requests/2.21.0 setuptools/40.6.3 requests-toolbelt/0.8.0 tqdm/4.30.0 CPython/3.6.3
|