Mysql数据库中表名和数据导入hive数据库中

使用的是shell脚本

sehll 复制代码
#!/bin/bash
#mysql地址
mysql_host="ip地址"
#mysql端口
mysql_port="3306"
#mysql用户名
mysql_user="root"
#mysql密码
mysql_password="root"
#mysql数据库
mysql_database="testdb"
#连接mysql执行sql语句查询所有的表名
mysql -h${mysql_host} -P${mysql_port} -u${mysql_user} -p${mysql_password} -D${mysql_database} -e "select table_name from information_schema.tables where table_schema='${mysql_database}'" > table_name.txt
#table_name.txt中的表名是以table_name开头的,需要将table_name去掉
sed -i 's/table_name//g' table_name.txt
#循环读取表名
for table_name in `cat table_name.txt`
#获取表结构
do
  mysql -h${mysql_host} -P${mysql_port} -u${mysql_user} -p${mysql_password} -D${mysql_database} -e "desc ${table_name}" > structure.txt
  #删除表结构中的第一行
  sed -i '1d' structure.txt
  #获取表的字段类型
  cat structure.txt | awk '{print $2}' > field_type.txt
  #获取表的字段名和字段类型
  cat structure.txt | awk '{print $1,$2}' > field_type_name.txt
  #循环读取字段类型
  for field_type in `cat field_type.txt`
  do
    #删除字段类型的括号和括号中的内容
    fieldType=${field_type//(*}
    #输出字段类型
    echo $fieldType
    sed -i 's/'$field_type'/'$fieldType'/g' field_type_name.txt
    #判断字段类型是否为VARCHAR
    if [ $fieldType = "varchar" ]
    then
      #将字段类型替换为string
      sed -i 's/'$fieldType'/string/g' field_type_name.txt
    fi
    #判断字段类型是否为var
    if [ $fieldType = "var" ]
    then
      #将字段类型替换为string
      sed -i 's/'$fieldType'/string/g' field_type_name.txt
    fi
    #判断字段类型是否为datetime
    if [ $fieldType = "datetime" ]
    then
      #将字段类型替换为timestamp
      sed -i 's/'$fieldType'/string/g' field_type_name.txt
    fi
    #判断字段类型是否为time
    if [ $fieldType = "time" ]
    then
      #将字段类型替换为string
      sed -i 's/'$fieldType'/string/g' field_type_name.txt
    fi
    #判断字段类型是否为timestamp
    if [ $fieldType = "timestamp" ]
    then
      #将字段类型替换为string
      sed -i 's/'$fieldType'/string/g' field_type_name.txt
    fi
  done
  #将修改后的表结构导入到hive中
  #设置插入的sql语句
  sql="create table if not exists ${table_name}("
  #循环读取字段名和字段类型
  while IFS= read -r field_type_name; do
#    echo "$field_type_name"
    # 在这里可以处理每一行内容
    sql=${sql}${field_type_name}","
  done < "field_type_name.txt"
  #删除sql语句中最后一个逗号
  sql=${sql%,*}
  #拼接sql语句
  sql=${sql}")ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' STORED AS TEXTFILE;"
  #输出sql语句
  echo $sql
  #执行sql语句
  hive -e "${sql}"

  #使用sqoop将mysql中的数据导入到hive中
  sqoop import --connect jdbc:mysql://${mysql_host}:${mysql_port}/${mysql_database} --username ${mysql_user} --password ${mysql_password} --table ${table_name} --hive-import --hive-table ${table_name} --fields-terminated-by ',' --lines-terminated-by '\n' --hive-overwrite

done
相关推荐
DFT计算杂谈2 分钟前
无 Root 权限在 Tesla K80 零门槛部署 DeepSeek 大模型
linux·服务器·网络·数据库·机器学习
HPFBoy10 分钟前
log4net 数据库存日志正确配置
数据库
liuxiaowei337 分钟前
【绝版教程】新版MySQL DBA高级实战进阶班 MySQL8.0 姜承尧-腾讯数据库总监
数据库·mysql·dba
破碎的南瓜1 小时前
sqli--sql注入过关笔记(1,2,3,4,5,9)
数据库·笔记·sql
吠品2 小时前
Zabbix Web界面误报Server未运行的排查与解决
java·服务器·数据库
SelectDB3 小时前
Apache Doris Variant 动态 JSON 实战教程:从建表到跑通 100M Agent 日志查询
数据库
sg_knight3 小时前
MySQL 存储过程详解:从入门到实战
android·数据库·mysql·database·dba·关系型数据库·db
星空露珠4 小时前
28种颜色对应名称,
开发语言·数据库·算法·游戏·lua
踏月的造梦星球5 小时前
DM8 DSC 单机双实例部署
运维·开发语言·数据库
Database_Cool_5 小时前
企业级多模态分析计算引擎选型:首选 AnalyticDB MySQL 向量 + SQL + 实时一体化方案
数据库·sql·mysql