ddl寄生并转换为bigquery json模式

ddlparse的Python项目详细描述


ddl解析

PyPI versionPython versionTravis CI Build StatusCoveralls Coverage Statuscodecov Coverage StatusRequirements StatusLicense

ddl parase并转换为bigquery json schema和ddl statements模块,在python中可用。


功能

要求

  1. python=3.4
  2. pyparsing

安装

安装

PIP安装:

$ pip install ddlparse

命令安装:

$ python setup.py install

更新

PIP更新:

$ pip install ddlparse --upgrade

用法

示例

fromddlparse.ddlparseimportDdlParsesample_ddl="""CREATE TABLE My_Schema.Sample_Table (  Id integer PRIMARY KEY COMMENT 'User ID',  Name varchar(100) NOT NULL COMMENT 'User name',  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 databasetable=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 databaseparser=DdlParse(ddl=sample_ddl,source_database=DdlParse.DATABASE.oracle)table=parser.parse()# parse pattern (3-1)parser=DdlParse()parser.ddl=sample_ddltable=parser.parse()# parse pattern (3-2) : Specify source databaseparser=DdlParse()parser.source_database=DdlParse.DATABASE.oracleparser.ddl=sample_ddltable=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 *")forcolintable.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_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("comment = '{}'".format(col.comment))col_info.append("description(=comment) = '{}'".format(col.description))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"])

许可证

BSD 3-Clause License

作者

新一德shinichi.takii@gmail.com

链接

特别感谢

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
google chrome我在哪里可以下载Mac OSX Lion的Java 6?   java管道化hadoop映射减少作业   java避免在使用jsoup解析html时删除空格和换行符   java将arrayList中的元素相互比较   如何创建一个计算一组数字之和的程序(Java)?   java JavaFX 8 JVM在退出后保留   升华文本3升华文本3 Java交互控制台?   JAVAutil。扫描仪和维基百科   java Android在RecyclerView中更新TextClock的时间格式(12/24小时格式)   java集合,如果达到限制,则可以在添加新项之前删除旧项   hex Java将十六进制转换为带符号的8位代码   java如何使用SQL中其他列的数据?   java如何确保返回指定类型的列表?   列出如何在java中声明匿名arraylist?   在JavaSpringBoot中使用RESTXML文件   使用Java在ColdFusion中计算HMACSHA256摘要的加密