|
6 | 6 | from sqlalchemy import MetaData, DateTime, Boolean, BigInteger |
7 | 7 | from sqlalchemy.schema import Column, Table |
8 | 8 | from sqlalchemy.sql import func |
9 | | -from modules.Shared import Constants |
| 9 | +from modules.shared import Constants |
10 | 10 |
|
11 | 11 |
|
12 | 12 | class DestinationTableManager(object): |
@@ -100,39 +100,35 @@ def rename_table(self, schema_name, source_table_name, target_table_name): |
100 | 100 | self.logger.debug(f"Table Rename, executing '{sql}'") |
101 | 101 | self.target_db.execute(sql) |
102 | 102 |
|
103 | | - def upsert_table(self, schema_name, source_table_name, target_table_name, columns_configuration): |
104 | | - column_array = list(map(lambda column: column['destination']['name'], columns_configuration)) |
| 103 | + def upsert_table(self, schema_name, source_table_name, target_table_name, columns_config): |
| 104 | + column_array = list(map(lambda column: column['destination']['name'], columns_config)) |
105 | 105 | column_list = ','.join(map(str, column_array)) |
106 | 106 | column_list = column_list + f",{Constants.AuditColumnNames.TIMESTAMP}" |
107 | 107 | column_list = column_list + f",{Constants.AuditColumnNames.IS_DELETED}" |
108 | 108 | column_list = column_list + f",{Constants.AuditColumnNames.CHANGE_VERSION}" |
109 | 109 |
|
110 | | - primary_key_column_array = [column_configuration['destination']['name'] for column_configuration in |
111 | | - columns_configuration if 'primary_key' in column_configuration['destination'] and |
112 | | - column_configuration['destination']['primary_key']] |
| 110 | + primary_key_column_array = [column_config['destination']['name'] for column_config in |
| 111 | + columns_config if 'primary_key' in column_config['destination'] and |
| 112 | + column_config['destination']['primary_key']] |
113 | 113 |
|
114 | 114 | primary_key_column_list = ','.join(map(str, primary_key_column_array)) |
115 | 115 |
|
116 | 116 | sql_builder = io.StringIO() |
117 | | - sql_builder.write(f"INSERT INTO {schema_name}.{target_table_name} ({column_list})") |
118 | | - sql_builder.write(os.linesep) |
119 | | - sql_builder.write(f" SELECT {column_list} FROM {schema_name}.{source_table_name}") |
120 | | - sql_builder.write(os.linesep) |
| 117 | + sql_builder.write(f"INSERT INTO {schema_name}.{target_table_name} ({column_list}) \n") |
| 118 | + sql_builder.write(f" SELECT {column_list} FROM {schema_name}.{source_table_name} \n") |
121 | 119 | sql_builder.write(f" ON CONFLICT({primary_key_column_list}) DO UPDATE SET ") |
122 | 120 |
|
123 | | - for column_configuration in columns_configuration: |
124 | | - sql_builder.write("{0} = EXCLUDED.{0},".format(column_configuration['destination']['name'])) |
125 | | - sql_builder.write(os.linesep) |
| 121 | + for column_config in columns_config: |
| 122 | + sql_builder.write("{0} = EXCLUDED.{0},\n".format(column_config['destination']['name'])) |
126 | 123 |
|
127 | | - sql_builder.write("{0} = EXCLUDED.{0},".format(Constants.AuditColumnNames.TIMESTAMP)) |
128 | | - sql_builder.write(os.linesep) |
129 | | - sql_builder.write("{0} = EXCLUDED.{0},".format(Constants.AuditColumnNames.IS_DELETED)) |
130 | | - sql_builder.write(os.linesep) |
131 | | - sql_builder.write("{0} = EXCLUDED.{0}".format(Constants.AuditColumnNames.CHANGE_VERSION)) |
132 | | - sql_builder.write(os.linesep) |
| 124 | + sql_builder.write("{0} = EXCLUDED.{0},\n".format(Constants.AuditColumnNames.TIMESTAMP)) |
| 125 | + sql_builder.write("{0} = EXCLUDED.{0},\n".format(Constants.AuditColumnNames.IS_DELETED)) |
| 126 | + sql_builder.write("{0} = EXCLUDED.{0};\n".format(Constants.AuditColumnNames.CHANGE_VERSION)) |
133 | 127 |
|
134 | | - self.logger.debug(f"UPSERT executing '{sql_builder.getvalue()}'") |
135 | | - self.target_db.execute(sql_builder.getvalue()) |
| 128 | + upsert_sql = sql_builder.getvalue() |
| 129 | + |
| 130 | + self.logger.debug(f"UPSERT executing '{upsert_sql}'") |
| 131 | + self.target_db.execute(upsert_sql) |
136 | 132 | self.logger.debug("UPSERT completed") |
137 | 133 |
|
138 | 134 | sql_builder.close() |
0 commit comments