2017-09-24 1 views
-3

J'ai une table SGBDR comme ceci:création de la table Hive avec une valeur par défaut

create table test (sno number, entry_date date default sysdate). 

Maintenant, je veux créer une table dans la ruche avec une structure en ajoutant une valeur par défaut à une colonne.

+0

Qu'avez-vous essayé? Quel est exactement le problème auquel vous êtes confronté? Montrer du code. – Roshith

Répondre

0

Ruche ne supporte pas les champs DEFAULT

ne signifie pas que vous ne pouvez pas le faire, cependant. Juste un processus en deux étapes de création d'une table "staging", puis en l'insérant dans une seconde table et en sélectionnant cette valeur "default".

Adding a default value to a column while creating table in hive

Depuis que vous mentionnez,

J'ai table SGBDR

Vous pouvez également utiliser votre table existante, et utiliser Sqoop pour importer les données dans la Ruche.

+0

Je n'importe pas de données via sqoop. Juste j'essaye de créer la réplique de la table de RDBMS dans la ruche. –

+0

Bien sûr. Mon point était que c'est une option –

1

Hive ne prend actuellement pas en charge la fonctionnalité d'ajout de valeur par défaut à une colonne lors de la création de la table. En guise de solution de contournement, chargez temporairement les données dans une table temporaire et utilisez l'instruction d'insertion de table d'insertion pour ajouter la date et l'heure actuelles dans la table principale.

  1. Créer une table temporaire

    create table test (sno number);

  2. Charger des données dans la table

  3. Créer table finale

    create table final_table (sno number, createDate string);

  4. Chargez enfin les données de la table Temp vers la table finale.

    insert overwrite table final_table select sno, FROM_UNIXTIME(UNIX_TIMESTAMP(), 'dd/MM/YYYY') from test;

+0

au lieu de créer la table STG que nous pouvons créer comme ça. créer une table finale (sno int, jdate date); insert dans la sélection finale 1, substr (from_unixtime (unix_timestamp()), 1,10); insérer dans la sélection finale MAX (sno) +1, substr (from_unixtime (unix_timestamp()), 1,10) de la finale; –