@@ -71,7 +71,7 @@ def build_data(connection, table, columns, excludes, total_count, verbose=False)
71
71
row [key ] = value
72
72
if verbose :
73
73
progress_bar .next ()
74
- table_columns = row .keys ()
74
+ table_columns = [ '"{}"' . format ( column ) for column in row .keys ()]
75
75
if not row_column_dict :
76
76
continue
77
77
data .append (row .values ())
@@ -135,18 +135,19 @@ def import_data(connection, column_dict, source_table, table_columns, primary_ke
135
135
:param list data: The table data.
136
136
"""
137
137
primary_key = primary_key if primary_key else DEFAULT_PRIMARY_KEY
138
+ temp_table = '"tmp_{table}"' .format (table = source_table )
138
139
cursor = connection .cursor ()
139
- cursor .execute ('CREATE TEMP TABLE source (LIKE %s INCLUDING ALL) ON COMMIT DROP;' % source_table )
140
- copy_from (connection , data , 'source' , table_columns )
141
- set_columns = ', ' .join (['{column} = s.{column}' .format (column = key ) for key in column_dict .keys ()])
140
+ cursor .execute ('CREATE TEMP TABLE %s (LIKE %s INCLUDING ALL) ON COMMIT DROP;' % ( temp_table , source_table ) )
141
+ copy_from (connection , data , temp_table , table_columns )
142
+ set_columns = ', ' .join (['{column} = s.{column}' .format (column = '"{}"' . format ( key ) ) for key in column_dict .keys ()])
142
143
sql = (
143
144
'UPDATE {table} t '
144
145
'SET {columns} '
145
- 'FROM source s '
146
+ 'FROM { source} s '
146
147
'WHERE t.{primary_key} = s.{primary_key};'
147
- ).format (table = source_table , primary_key = primary_key , columns = set_columns )
148
+ ).format (table = source_table , columns = set_columns , source = temp_table , primary_key = primary_key )
148
149
cursor .execute (sql )
149
- cursor .execute ('DROP TABLE source;' )
150
+ cursor .execute ('DROP TABLE %s;' % temp_table )
150
151
cursor .close ()
151
152
152
153
0 commit comments