Skip to content

Instantly share code, notes, and snippets.

@JnsFerreira
Created July 18, 2023 17:29
Show Gist options
  • Save JnsFerreira/0f78d82eb3745df936d8d0b607b1b785 to your computer and use it in GitHub Desktop.
Save JnsFerreira/0f78d82eb3745df936d8d0b607b1b785 to your computer and use it in GitHub Desktop.
athena_create_table_generator.py
import boto3
def get_glue_table_schema(database_name, table_name):
client = boto3.client('glue')
response = client.get_table(
DatabaseName=database_name,
Name=table_name
)
schema = response['Table']['StorageDescriptor']['Columns']
return schema
def generate_athena_create_ddl(database_name, table_name):
schema = get_glue_table_schema(database_name, table_name)
ddl_columns = [f"`{col['Name']}` {col['Type']}" for col in schema]
ddl_statement = f"CREATE EXTERNAL TABLE IF NOT EXISTS `{table_name}` (\n\t{',\n\t'.join(ddl_columns)}\n)\nSTORED AS PARQUET\nLOCATION 's3://your-bucket/{table_name}/'\n"
return ddl_statement
# Example usage
database_name = 'your-database-name'
table_name = 'your-table-name'
ddl = generate_athena_create_ddl(database_name, table_name)
print(ddl)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment