Sqoop导出shell脚本

3 篇文章 0 订阅
3 篇文章 0 订阅

Sqoop对hive进行导出到mysql的shell脚本

1.表准备

--mysql表

CREATE TABLE src_sc(

`sid` int ,

`cid` int ,

`gd` int

) COMMENT = 'src_sc'CREATE TABLE src_sc_d(

`sid` int ,

`cid` int ,

`gd` int

) COMMENT = 'src_sc'--非分区表

CREATE TABLE src.src_sc (

`sid` int ,

`cid` int ,

`gd` int

) COMMENT 'sc'

ROW FORMAT DELIMITED FIELDS TERMINATED BY '\001' STORED AS textfile;

--分区表

drop table src.src_sc_d;

CREATE TABLE src.src_sc_d (

`sid` int ,

`cid` int ,

`gd` int

) COMMENT 'sc'

PARTITIONED BY (etl_date STRING COMMENT 'etl_日期')

ROW FORMAT DELIMITED FIELDS TERMINATED BY '\001'

lines terminated by '\n'

STORED AS textfile;

2.shell脚本导出

2.1.非分区表导出脚本
#!/bin/bash

#######非分区表导出#######

#sqoop的地址的bin/sqoop

sqoop_home=/opt/links/sqoop/bin/sqoop

#mysql的连接

connect=jdbc:mysql://hlm03:8021/bfd

#用户名

username=root

#密码

password=root

#mysql表名

table=src_sc

#列分割符

fields_terminated_by="\001"

#hive表的数据地址

export_dir=/user/hive/warehouse/src.db/src_sc

export_data() {

$sqoop_home export \

--connect $connect \

--username $username \

--password $password \

--table $table \

--fields-terminated-by "$fields_terminated_by" \

--num-mappers 1 \

--columns sid,cid,gd \

--export-dir $export_dir \

--input-null-string '\\N' \

--input-null-non-string '\\N'

}

export_data
2.2.分区表接入脚本
#!/bin/bash

#######分区表导出#######

#etl_date=2022-05-09

#获取昨日日期

etl_date=$(date -d"1 day ago" +%Y-%m-%d)

#sqoop的地址的bin/sqoop

sqoop_home=/opt/links/sqoop/bin/sqoop

#mysql的连接

connect=jdbc:mysql://hlm03:8021/bfd

#用户名

username=root

#密码

password=root

#mysql表名

table=src_sc_d

#列分割符

fields_terminated_by="\001"

#分区字段

hive_partition_key=etl_date

#分区值

hive_partition_value=$etl_date

#hive表的数据地址

export_dir=/user/hive/warehouse/src.db/src_sc_d/$hive_partition_key=$hive_partition_value

export_data() {

$sqoop_home export \

--connect $connect \

--username $username \

--password $password \

--table $table \

--fields-terminated-by "$fields_terminated_by" \

--num-mappers 1 \

--columns sid,cid,gd \

--export-dir $export_dir \

--input-null-string '\\N' \

--input-null-non-string '\\N'

}

export_data
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Sqoop是一个用于在Hadoop和关系型数据库之间进行数据传输的工具。它可以将数据从关系型数据库导入到Hadoop集群中,也可以将数据从Hadoop集群导出到关系型数据库中。下面是一个Sqoop数据导入导出shell脚本示例: 1. 数据导入脚本: ``` sqoop import \ --connect jdbc:mysql://localhost/mydatabase \ --username root \ --password password \ --table mytable \ --target-dir /user/hadoop/mydata \ --m 1 ``` 这个脚本将从MySQL数据库中的mytable表导入数据,并将数据存储在Hadoop集群中的/user/hadoop/mydata目录下。其中,--connect参数指定了数据库连接URL,--username和--password参数指定了数据库的用户名和密码,--table参数指定了要导入的表名,--target-dir参数指定了数据存储的目录,--m参数指定了并行度。 2. 数据导出脚本: ``` sqoop export \ --connect jdbc:mysql://localhost/mydatabase \ --username root \ --password password \ --table mytable \ --export-dir /user/hadoop/mydata \ --input-fields-terminated-by '\t' \ --input-lines-terminated-by '\n' ``` 这个脚本将从Hadoop集群中的/user/hadoop/mydata目录中读取数据,并将数据导出到MySQL数据库的mytable表中。其中,--connect参数指定了数据库连接URL,--username和--password参数指定了数据库的用户名和密码,--table参数指定了要导出的表名,--export-dir参数指定了数据读取的目录,--input-fields-terminated-by和--input-lines-terminated-by参数指定了输入数据的分隔符。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值