Maison  >  Article  >  base de données  >  À propos de la manière dont les métadonnées Mysql génèrent des scripts d'annotation d'instructions de création de table Hive

À propos de la manière dont les métadonnées Mysql génèrent des scripts d'annotation d'instructions de création de table Hive

小云云
小云云original
2017-12-22 14:18:112364parcourir

Récemment, lors de l'extraction de données de Mysql et d'autres bases de données relationnelles dans une table Hive, il est nécessaire de synchroniser les commentaires dans la table MySQL. Le script suivant peut générer des instructions de modification des commentaires sur les champs de la table Hive. Il vous présente principalement les informations pertinentes sur la façon dont les métadonnées Mysql génèrent des scripts d'annotation d'instructions de création de table Hive. L'article les présente de manière très détaillée à travers un exemple de code. Il a une certaine valeur d'apprentissage de référence pour les études ou le travail de chacun. instructions ci-dessous. Apprenons ensemble.

Remarque : D'autres bases de données relationnelles telles qu'Oracle peuvent être implémentées grâce à la même idée, en lisant les métadonnées et en modifiant la syntaxe du script.

Utilisation :

Exécutez l'instruction suivante dans la métabase mysql : information_schema


SELECT CONCAT('alter table ', TABLE_NAME, ' CHANGE COLUMN ', COLUMN_NAME, ' ', COLUMN_NAME, ' ', DATA_TYPE, ' comment ', '"', COLUMN_COMMENT, '"', ';')
FROM (SELECT TABLE_NAME, COLUMN_NAME, CASE WHEN DATA_TYPE = 'varchar' THEN 'string' WHEN DATA_TYPE = 'int' THEN 'int' WHEN DATA_TYPE = 'tinyint' THEN 'tinyint' WHEN DATA_TYPE = 'decimal' THEN 'double' WHEN DATA_TYPE = 'datetime' THEN 'string' WHEN DATA_TYPE = 'timestamp' THEN 'string' WHEN DATA_TYPE = 'float' THEN 'double' WHEN DATA_TYPE = 'double' THEN 'double' WHEN DATA_TYPE = 'bigint' THEN 'bigint' END AS DATA_TYPE, COLUMN_COMMENT
FROM COLUMNS
WHERE TABLE_NAME = 'o_oms_statistic_profit'
) t;

Lors de l'extraction de données d'autres bases de données relationnelles telles que Mysql dans une table Hive, vous devez synchroniser les commentaires dans la table mysql. Le script suivant peut générer une instruction de création de table Hive. Seules les informations du champ principal de la table ruche sont générées et d'autres informations doivent être ajoutées manuellement.

Exécutez l'instruction suivante dans la base de données de métadonnées MySQL : information_schema


SELECT CONCAT('create table ', TABLE_NAME, '(', substring(column_info, 1, length(column_info) - 1), ')', ' comment ', '"', TABLE_COMMENT, '"', ';')
FROM (SELECT TABLE_NAME, TABLE_COMMENT, group_concat(CONCAT(COLUMN_NAME, ' ', DATA_TYPE, ' comment ', '"', COLUMN_COMMENT, '"')) AS column_info
FROM (SELECT t1.TABLE_NAME, CASE WHEN t2.TABLE_COMMENT = NULL THEN t1.TABLE_NAME ELSE t2.TABLE_COMMENT END AS TABLE_COMMENT, COLUMN_NAME, CASE WHEN DATA_TYPE = 'varchar' THEN 'string' WHEN DATA_TYPE = 'int' THEN 'int' WHEN DATA_TYPE = 'tinyint' THEN 'tinyint' WHEN DATA_TYPE = 'decimal' THEN 'double' WHEN DATA_TYPE = 'datetime' THEN 'string' WHEN DATA_TYPE = 'timestamp' THEN 'string' WHEN DATA_TYPE = 'float' THEN 'double' WHEN DATA_TYPE = 'double' THEN 'double' WHEN DATA_TYPE = 'bigint' THEN 'bigint' END AS DATA_TYPE, CASE WHEN COLUMN_COMMENT = NULL THEN COLUMN_NAME ELSE COLUMN_COMMENT END AS COLUMN_COMMENT
FROM COLUMNS t1 JOIN TABLES t2 ON t1.TABLE_NAME = t2.TABLE_NAME
WHERE t1.TABLE_NAME = 'o_oms_statistic_profit'
) t3
GROUP BY TABLE_NAME, TABLE_COMMENT
) t4;

Recommandations associées :

Qu'est-ce que les métadonnées MySQL ? Introduction aux métadonnées et exemple de code

Installation et tests simples de Hive basés sur les métadonnées MySQL

[MySQL] Étapes pour obtenir des métadonnées

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn