import re _UNLOAD_SQL_TEMPLATE = """ UNLOAD ('{query}') TO '{s3_prefix}' CREDENTIALS '{creds}' {options}""" _AWS_CREDS_TEMPLATE = 'aws_access_key_id={aws_access_key};' \ 'aws_secret_access_key={aws_access_secret}' _DESCRIBE_TABLE_SQL_TEMPLATE = """ SELECT column_name, is_nullable, data_type, column_default, character_maximum_length, character_octet_length, numeric_precision, numeric_precision_radix, numeric_scale, datetime_precision FROM information_schema.columns WHERE table_schema = '{schema}' and table_name = '{table}' ORDER BY ordinal_position""" def _escape_single_quotes(query): """Escape unescaped single quotes with backslashes. If single quotes already escaped, do nothing. Escaping of single quotes is required because of syntax of UNLOAD command: UNLOAD ('SELECT \'\' AS some_column, ...') Args: query (str): SQL SELECT query for using in UNLOAD operation. Returns: str: SQL SELECT query containing only escaped single quotes. """ return re.sub(r"(?