@@ -29,8 +29,8 @@ def _validate_connection(con: redshift_connector.Connection) -> None:
2929
3030
3131def _drop_table (cursor : redshift_connector .Cursor , schema : Optional [str ], table : str ) -> None :
32- schema_str = f"{ schema } ." if schema else ""
33- sql = f" DROP TABLE IF EXISTS { schema_str } { table } "
32+ schema_str = f' "{ schema } ".' if schema else ""
33+ sql = f' DROP TABLE IF EXISTS { schema_str } " { table } "'
3434 _logger .debug ("Drop table query:\n %s" , sql )
3535 cursor .execute (sql )
3636
@@ -62,9 +62,9 @@ def _copy(
6262 schema : Optional [str ] = None ,
6363) -> None :
6464 if schema is None :
65- table_name : str = table
65+ table_name : str = f'" { table } "'
6666 else :
67- table_name = f"{ schema } . { table } "
67+ table_name = f' "{ schema } "." { table } "'
6868 sql : str = f"COPY { table_name } FROM '{ path } '\n IAM_ROLE '{ iam_role } '\n FORMAT AS PARQUET"
6969 _logger .debug ("copy query:\n %s" , sql )
7070 cursor .execute (sql )
@@ -84,7 +84,7 @@ def _upsert(
8484 raise exceptions .InvalidRedshiftPrimaryKeys ()
8585 equals_clause : str = f"{ table } .%s = { temp_table } .%s"
8686 join_clause : str = " AND " .join ([equals_clause % (pk , pk ) for pk in primary_keys ])
87- sql : str = f" DELETE FROM { schema } . { table } USING { temp_table } WHERE { join_clause } "
87+ sql : str = f' DELETE FROM " { schema } "." { table } " USING { temp_table } WHERE { join_clause } '
8888 _logger .debug (sql )
8989 cursor .execute (sql )
9090 sql = f"INSERT INTO { schema } .{ table } SELECT * FROM { temp_table } "
@@ -177,7 +177,7 @@ def _create_table(
177177 if mode == "upsert" :
178178 guid : str = uuid .uuid4 ().hex
179179 temp_table : str = f"temp_redshift_{ guid } "
180- sql : str = f" CREATE TEMPORARY TABLE { temp_table } (LIKE { schema } . { table } )"
180+ sql : str = f' CREATE TEMPORARY TABLE { temp_table } (LIKE " { schema } "." { table } ")'
181181 _logger .debug (sql )
182182 cursor .execute (sql )
183183 return temp_table , None
@@ -217,7 +217,7 @@ def _create_table(
217217 distkey_str : str = f"\n DISTKEY({ distkey } )" if distkey and diststyle == "KEY" else ""
218218 sortkey_str : str = f"\n { sortstyle } SORTKEY({ ',' .join (sortkey )} )" if sortkey else ""
219219 sql = (
220- f" CREATE TABLE IF NOT EXISTS { schema } . { table } (\n "
220+ f' CREATE TABLE IF NOT EXISTS " { schema } "." { table } " (\n '
221221 f"{ cols_str } "
222222 f"{ primary_keys_str } "
223223 f")\n DISTSTYLE { diststyle } "
@@ -538,7 +538,7 @@ def read_sql_table(
538538 >>> con.close()
539539
540540 """
541- sql : str = f" SELECT * FROM { table } " if schema is None else f" SELECT * FROM { schema } . { table } "
541+ sql : str = f' SELECT * FROM " { table } "' if schema is None else f' SELECT * FROM " { schema } "." { table } "'
542542 return read_sql_query (
543543 sql = sql , con = con , index_col = index_col , params = params , chunksize = chunksize , dtype = dtype , safe = safe
544544 )
@@ -627,6 +627,7 @@ def to_sql(
627627 if df .empty is True :
628628 raise exceptions .EmptyDataFrame ()
629629 _validate_connection (con = con )
630+ autocommit_temp : bool = con .autocommit
630631 con .autocommit = False
631632 try :
632633 with con .cursor () as cursor :
@@ -650,8 +651,8 @@ def to_sql(
650651 if index :
651652 df .reset_index (level = df .index .names , inplace = True )
652653 placeholders : str = ", " .join (["%s" ] * len (df .columns ))
653- schema_str = f"{ created_schema } ." if created_schema else ""
654- sql : str = f" INSERT INTO { schema_str } { created_table } VALUES ({ placeholders } )"
654+ schema_str = f' "{ created_schema } ".' if created_schema else ""
655+ sql : str = f' INSERT INTO { schema_str } " { created_table } " VALUES ({ placeholders } )'
655656 _logger .debug ("sql: %s" , sql )
656657 parameters : List [List [Any ]] = _db_utils .extract_parameters (df = df )
657658 cursor .executemany (sql , parameters )
@@ -662,6 +663,8 @@ def to_sql(
662663 con .rollback ()
663664 _logger .error (ex )
664665 raise
666+ finally :
667+ con .autocommit = autocommit_temp
665668
666669
667670def unload_to_files (
@@ -1009,6 +1012,7 @@ def copy_from_files( # pylint: disable=too-many-locals,too-many-arguments
10091012 >>> con.close()
10101013
10111014 """
1015+ autocommit_temp : bool = con .autocommit
10121016 con .autocommit = False
10131017 try :
10141018 with con .cursor () as cursor :
@@ -1047,6 +1051,8 @@ def copy_from_files( # pylint: disable=too-many-locals,too-many-arguments
10471051 con .rollback ()
10481052 _logger .error (ex )
10491053 raise
1054+ finally :
1055+ con .autocommit = autocommit_temp
10501056
10511057
10521058def copy ( # pylint: disable=too-many-arguments
0 commit comments