2017-07-26 3 views
0

J'ai des tables externes et internes dans greenplum. La table externe pointe dans hdfs un fichier csv. Ce fichier csv dans Hdfs se charger avec les données complètes d'une table toutes les heures. Quelle est la meilleure façon de charger les données de manière incrémentielle dans la table interne de greenplum.Charge incrémentale dans greenplum

+0

Cela dépend de la SLA et combien de temps il faut pour charger toute la table à l'aide gphdfs. tronquer et insérer peut-être le meilleur moyen. insert dans target_table sélectionnez * from external_table où column> 'value' pourrait être le meilleur moyen. Ou vous pourriez avoir besoin de créer dynamiquement une table externe pour chaque chargement. –

+0

J'ai vérifié en utilisant gphdfs capable de charger des données entières dans la table externe est très rapide. Cependant, au lieu de tronquer toute la table veut aller pour la charge incrémentielle dans Greenplum. – vkumar

+0

Je pense que vous venez de répondre à votre propre question alors. –

Répondre

0

créer une table de dimension dans greenplum où elle stocke la dernière partie du till où elle a été précédemment chargée comme l'horodatage ou n'importe quel point de données. Utiliser au-dessus de la table de dimension, vous pouvez un retour UDF de telle sorte que chaque heure à chaque fois qu'un nouveau fichier arrive, il sera chargé à l'étape/extrenal table, puis avec les derniers paramètres chargés de la table de dimension, il va seuls les enregistrements pertinents/nouveaux doivent être traités plus avant.

Merci, Shobha

+0

S'il vous plaît lire https://stackoverflow.com/help/how-to-answer –