Last active
January 6, 2020 14:04
-
-
Save mesmacosta/86bd6a4b4938eaf67dd2d95a3afa3ef9 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| teradatasql |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| import argparse | |
| import logging | |
| import random | |
| import sys | |
| import uuid | |
| from teradatasql import connect | |
| _DATA_TYPES = [ | |
| 'INTEGER', 'CHAR(25)', 'DECIMAL(8,2)', 'DATE', 'VARCHAR(25)', 'SMALLINT', | |
| 'CHAR', 'BYTEINT' | |
| ] | |
| _COLUMN_NAMES = [ | |
| 'name', 'address', 'city', 'state', 'date_time', 'paragraph', 'randomdata', | |
| 'person', 'credit_card', 'size', 'reason', 'school', 'food', 'location', | |
| 'house', 'price', 'cpf', 'cnpj', 'passport', 'security_number', | |
| 'phone_number', 'bank_account_number', 'ip_address', 'stocks' | |
| ] | |
| _TABLE_NAMES = [ | |
| 'school_info', 'personal_info', 'persons', 'employees', 'companies', | |
| 'store', 'home' | |
| ] | |
| _DATABASE_NAMES = [ | |
| 'school_warehouse', 'company_warehouse', 'on_prem_warehouse', | |
| 'factory_warehouse', 'organization_warehouse' | |
| ] | |
| def get_conn(connection_args): | |
| return connect(None, | |
| database=connection_args['database'], | |
| host=connection_args['host'], | |
| user=connection_args['user'], | |
| password=connection_args['pass']) | |
| def create_random_metadata(connection_args): | |
| conn = get_conn(connection_args) | |
| cursor = conn.cursor() | |
| for x in range(4): | |
| database_name, database_stmt = build_create_database_statement() | |
| cursor.execute(database_stmt) | |
| for y in range(250): | |
| query = build_create_table_statement(database_name) | |
| print('\n' + query) | |
| cursor.execute(query) | |
| conn.commit() | |
| cursor.close() | |
| def get_random_database_name(): | |
| return random.choice(_DATABASE_NAMES) | |
| def build_create_database_statement(): | |
| database_name = '{}{}'.format(get_random_database_name(), | |
| str(random.randint(1, 100000))) | |
| database_stmt = 'CREATE DATABASE "{}" AS '.format( | |
| database_name) | |
| database_stmt += 'PERM = 2000000*(HASHAMP()+1), ' | |
| database_stmt += 'SPOOL = 2000000*(HASHAMP()+1), ' | |
| database_stmt += 'TEMPORARY = 2000000*(HASHAMP()+1) ' | |
| return database_name, database_stmt | |
| def get_random_data_type(): | |
| return random.choice(_DATA_TYPES) | |
| def get_random_column_name(): | |
| return random.choice(_COLUMN_NAMES) | |
| def get_random_table_name(): | |
| return random.choice(_TABLE_NAMES) | |
| def build_create_table_statement(database_name): | |
| table_stmt = 'CREATE TABLE {}.{}{} ( '.format(database_name, | |
| get_random_table_name(), | |
| uuid.uuid4().hex[:8]) | |
| table_stmt = '{}{}{} {}'.format(table_stmt, get_random_column_name(), | |
| str(random.randint(1, 100000)), | |
| get_random_data_type()) | |
| for x in range(random.randint(1, 15)): | |
| table_stmt += ', {}{}'.format(get_random_column_name(), | |
| str(random.randint(1, 100000))) + \ | |
| ' {}'.format(get_random_data_type()) | |
| table_stmt = '{} )'.format(table_stmt) | |
| return table_stmt | |
| def parse_args(): | |
| parser = argparse.ArgumentParser( | |
| description='Command line generate random metadata into teradata') | |
| parser.add_argument('--teradata-host', | |
| help='Your teradata server host', | |
| required=True) | |
| parser.add_argument('--teradata-user', | |
| help='Your teradata credentials user') | |
| parser.add_argument('--teradata-pass', | |
| help='Your teradata credentials password') | |
| parser.add_argument('--teradata-database', | |
| help='Your teradata database name') | |
| return parser.parse_args() | |
| if __name__ == "__main__": | |
| args = parse_args() | |
| # Enable logging | |
| logging.basicConfig(stream=sys.stdout, level=logging.DEBUG) | |
| create_random_metadata({ | |
| 'database': args.teradata_database, | |
| 'host': args.teradata_host, | |
| 'user': args.teradata_user, | |
| 'pass': args.teradata_pass | |
| }) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment