Add feature to upload missing column values as NULL
authorKarl O. Pinc <kop@karlpinc.com>
Thu, 10 Oct 2024 18:24:31 +0000 (13:24 -0500)
committerKarl O. Pinc <kop@karlpinc.com>
Thu, 10 Oct 2024 18:24:31 +0000 (13:24 -0500)
src/pgwui_bulk_upload/pgwui_bulk_upload.py
src/pgwui_bulk_upload/views/bulk_upload.py

index 183f456f519b05d85c4bf63bc5447d7a16ffc06d..bbcc7b09048494bd7ed288879d38bd4470877736 100644 (file)
@@ -31,6 +31,7 @@ DEFAULT_LITERAL_COLUMN_HEADINGS = 'no-never'
 DEFAULT_TRIM = 'choice-yes'
 DEFAULT_NULL = 'choice-yes'
 DEFAULT_FILE_FORMAT = 'csv'
+DEFAULT_ADD_MISSING_COLUMNS = 'no-never'
 
 
 def establish_settings(config):
@@ -53,6 +54,8 @@ def establish_settings(config):
         'null', DEFAULT_NULL)
     bulk_upload_settings.setdefault(
         'file_format', DEFAULT_FILE_FORMAT)
+    bulk_upload_settings.setdefault(
+        'add_missing_columns', DEFAULT_ADD_MISSING_COLUMNS)
 
 
 def includeme(config):
index 2075541caf2e319ee7c806b1aec5171b05167568..62fbdddc920166f35facfb19f7847fa0a9278b2e 100644 (file)
@@ -100,6 +100,7 @@ class SaveBulkLine(DataLineProcessor, ParameterExecutor):
         '''
         super().__init__(ue, uh)
         self.insert_map = insert_map
+        self.add_missing_columns = uh.uf['add_missing_columns']
 
     def eat(self, bulk_data):
         '''
@@ -114,7 +115,9 @@ class SaveBulkLine(DataLineProcessor, ParameterExecutor):
         try:
             udl = thunk()
             insert_stmt = self.insert_map[filepath]
-            match_insert_to_dataline(udl, insert_stmt, source_file=filepath)
+            match_insert_to_dataline(
+                udl, insert_stmt, self.add_missing_columns,
+                source_file=filepath)
             self.param_execute(insert_stmt.stmt, udl)
         except (core_ex.DataLineError, core_ex.DBError) as exp:
             relation = data.relation