Browse Source

HUE-8557 [sqoop] Offer to rename the table or selected a different existing Hive database

Romain Rigaux 7 năm trước cách đây
mục cha
commit
29984ab178

+ 12 - 4
desktop/libs/indexer/src/indexer/indexers/rdbms.py

@@ -134,10 +134,15 @@ def run_sqoop(request, source, destination, start_time):
   destination_custom_enclosed_by_delimiter = destination['customEnclosedByDelimiter']
   destination_splitby_column = destination['rdbmsSplitByColumn']
 
+  hive_database_name, hive_table_name = 'default', destination_name
+
   if not rdbms_all_tables_selected:
     rdbms_table_name = source['rdbmsTableName']
+    if '.' in destination_name:
+      hive_database_name, hive_table_name = destination_name.split('.', 1)
   else:
     rdbms_table_name = None
+    hive_database_name = destination_name
 
   if rdbms_mode == 'configRdbms' and rdbms_name == 'jdbc':
     username = ''
@@ -217,13 +222,16 @@ def run_sqoop(request, source, destination, start_time):
   elif destination_type == 'table':
     success_url = reverse('metastore:describe_table', kwargs={'database': destination_database_name, 'table': destination_table_name})
     if rdbms_all_tables_selected:
-      statement = 'import-all-tables %(statement)s --hive-import --delete-target-dir' % {
-        'statement': statement
+      statement = 'import-all-tables %(statement)s --hive-import --delete-target-dir --hive-database %(hive_database_name)s' % {
+        'statement': statement,
+        'hive_database_name': hive_database_name
       }
     else:
-      statement = 'import %(statement)s --table %(rdbmsTableName)s --hive-import --delete-target-dir' % {
+      statement = 'import %(statement)s --table %(rdbmsTableName)s --hive-import --delete-target-dir --hive-database %(hive_database_name)s --hive-table %(hive_table_name)s' % {
         'statement': statement,
-        'rdbmsTableName': rdbms_table_name
+        'rdbmsTableName': rdbms_table_name,
+        'hive_database_name': hive_database_name,
+        'hive_table_name': hive_table_name
       }
       statement = _splitby_column_check(statement, destination_splitby_column)
   elif destination_type == 'hbase':

+ 6 - 2
desktop/libs/indexer/src/indexer/templates/importer.mako

@@ -510,7 +510,7 @@ ${ assist.assistPanel() }
             <!-- /ko -->
 
             <!-- ko if: ['table', 'database'].indexOf(outputFormat()) != -1 -->
-              <input type="text" class="input-xlarge" data-bind="value: name, hivechooser: name, namespace: namespace, compute: compute, skipColumns: true, skipTables: outputFormat() == 'database', valueUpdate: 'afterkeydown', apiHelperUser: '${ user }', apiHelperType: sourceType, mainScrollable: $(MAIN_SCROLLABLE), attr: { 'placeholder': outputFormat() == 'table' ? '${  _ko('Table name or <database>.<table>') }' : '${  _ko('Database name') }' }" pattern="^([a-zA-Z0-9_]+\.)?[a-zA-Z0-9_]*$" title="${ _('Only alphanumeric and underscore characters') }">
+              <input type="text" class="input-xxlarge" data-bind="value: name, hivechooser: name, namespace: namespace, compute: compute, skipColumns: true, skipTables: outputFormat() == 'database', valueUpdate: 'afterkeydown', apiHelperUser: '${ user }', apiHelperType: sourceType, mainScrollable: $(MAIN_SCROLLABLE), attr: { 'placeholder': outputFormat() == 'table' ? '${  _ko('Table name or <database>.<table>') }' : '${  _ko('Database name') }' }" pattern="^([a-zA-Z0-9_]+\.)?[a-zA-Z0-9_]*$" title="${ _('Only alphanumeric and underscore characters') }">
             <!-- /ko -->
 
             <!-- ko if: outputFormat() == 'altus' -->
@@ -1641,7 +1641,11 @@ ${ assist.assistPanel() }
       self.rdbmsAllTablesSelected = ko.observable(false);
       self.rdbmsIsAllTables = ko.observable(false);
       self.rdbmsIsAllTables.subscribe(function(newVal) {
-        self.rdbmsTableName('');
+        if (newVal) {
+          wizard.destination.name(self.rdbmsDatabaseName());
+        } else {
+          wizard.destination.name(self.rdbmsTableName()); // To add self.rdbmsDatabaseName() would need to check for existence and/or create automatically
+        }
         self.rdbmsAllTablesSelected(newVal);
       });
       self.rdbmsDbIsValid = ko.observable(false);