hive हाइव टेबल को एक डेटाबेस से दूसरे स्थानांतरित करना




hiveql (7)

मुझे एक हाइव टेबल को एक डाटाबेस से दूसरे स्थान पर ले जाने की आवश्यकता है मैं उसे कैसे कर सकता हूँ?


आप कोशिश कर सकते हैं - सीटीएएस

USE NEW_DB;

CREATE TABLE table
AS
SELECT * FROM OLD_DB.table;

DROP TABLE OLD_DB.table;

यह आपके लिए सहायक हो सकता है

EXPORT TABLE table_or_partition TO hdfs_path;
IMPORT [[EXTERNAL] TABLE table_or_partition] FROM hdfs_path [LOCATION[table_location]];

कुछ नमूना विवरण इस तरह दिखेंगे:

EXPORT TABLE <table name> TO 'location in hdfs';

Use test_db;
IMPORT FROM 'location in hdfs';

Export Import can be appled on a partition basis as well:
EXPORT TABLE <table name> PARTITION (loc="USA") to 'location in hdfs';

नीचे दिए गए आयात कमांड को एक प्रबंधित तालिका के बजाय एक बाहरी तालिका में आयात किया जाता है

IMPORT EXTERNAL TABLE FROM 'location in hdfs' LOCATION ‘/location/of/external/table’;

जवाब में कई विधियां दी गई हैं, लेकिन इसका उपयोग करने के समय कोई मार्गदर्शन नहीं है,

  1. CTAS का उपयोग करें जब आपका लक्ष्य एक प्रबंधित तालिका है:

    CREATE NEW_DB.TABLE table AS SELECT * FROM OLD_DB.TABLE;
    DROP TABLE OLD_DB.TABLE;
    
  2. यदि आप इसे एक साधारण तालिका नाम बदलने के साथ करना चाहते हैं, लेकिन तालिका का स्थान परिवर्तित नहीं होता है:

    alter table old_database.table_a rename to new_database.table_a;
    
  3. प्रयोग की तरह बनाएं और जोड़ें:

    CREATE NEW_DB.TABLE table LIKE OLD_DB.TABLE;
    INSERT INTO TABLE new_table_name partition (partition_column) select col1, col2, col3, col4 from old_db.old_table_name where partition_column='value';
    DROP TABLE old_db.old_table_name;
    

0.14 के बाद से, आप उसी मेटास्टोर में तालिका को एक डेटाबेस से दूसरे स्थान पर ले जाने के लिए निम्नलिखित कथन का उपयोग कर सकते हैं:

use old_database;
alter table table_a rename to new_database.table_a

उपरोक्त विवरण hdfs पर टेबल डेटा भी ले जाएंगे अगर table_a एक प्रबंधित तालिका है।


बाहरी तालिका new_db.table जैसे पुराने_निर्धारित स्थान बनाएँ '(hdfs फाइल में फ़ाइल का पथ)';

यदि आपके पास तालिका में विभाजन है तो आपको नया_db.table में विभाजन जोड़ना होगा।


यदि तालिकाओं को विभाजित किया जाता है, तो मूल रूप से आप पुराने तालिका से विभाजित डेटा को नए टेबल पर कॉपी कर सकते हैं और पुराने टेबल हटा सकते हैं।

  1. use new_db;
  2. नए डेटाबेस में नई तालिका बनाएं:

    Create Table table_name;
    
  3. इस आदेश का उपयोग करते हुए पुराने तालिकाओं से नए टेबल में डेटा डालें:

    insert into new_table_name partition (partition_column='value') 
      select col1, col2, col3, col4 from old_db.old_table_name 
      where partition_column='value';
    

जिस डेटाबेस को आप माइग्रेट करना चाहते हैं वह आपको डेटाबेस कनेक्टर के साथ प्रदान कर लेगा। चौकोर और डेटाबेस कनेक्टर की सहायता से, आप इसे माइग्रेट करने में सक्षम हो सकते हैं। अच्छा होगा यदि आप उस डेटाबेस के प्रकार के बारे में अधिक विशिष्ट हैं जो आप डेटा को माइग्रेट करना चाहते हैं