2016 - 2024

感恩一路有你

mysql怎么复制表的结构和数据 怎么实现跨服务器自动复制sql表数据?

浏览量:4567 时间:2023-03-22 15:53:47 作者:采采

怎么实现跨服务器自动复制sql表数据?

MySQL :: MySQL GUI Tools Bundl: Archiv

如何用sqoop将hive分区表信息导入到mysql命令?

问题分析:

hive中分区表其底层就是HDFS中的多个目录下的单个文件,hive导出数据本质是将HDFS中的文件导出

hive中的分区表,因为分区字段(静态分区)不在文件中,所以在sqoop导出的时候,无法将分区字段进行直接导出

思路:在hive中创建一个临时表,将分区表复制过去后分区字段转换为普通字段,然后再用sqoop将tmp表导出即实现需求

步凑如下:

文章目录

1.创建目标表(分区表)

1.1查看表结构

2.导入数据

3.查询表dept_partition

4.创建临时表 tmp_dept_partition

5.查询临时表

6.查看表结构(这个时候分区表已经转换为非分区表了)

中建表 dept_partition

8.使用sqoop导入到MySQL

查询验证是否成功导出

1.创建目标表(分区表)

hivegt CREATE TABLE `dept_partition`(

`deptno` int,

`dname` string,

`loc` string)

PARTITIONED BY (`month` string) row format delimited fields terminated by t

1

2

3

4

5

1

2

3

4

5

1.1查看表结构

hivegt show create table dept_partition

1

1

---------------------------------------------------- --

| createtab_stmt |

---------------------------------------------------- --

| CREATE TABLE `dept_partition`( |

| `deptno` int, |

| `dname` string, |

| `loc` string) |

| PARTITIONED BY ( |

| `month` string)

1

2

3

4

5

6

7

8

9

1

2

3

4

5

6

7

8

9

2.导入数据

hivegt load data inpath /user/hive/hive_db/data/dept.txt into table dept_partition

1

1

10tACCOUNTINGt1700

20tRESEARCHt1800

30tSALESt1900

40tOPERATIONSt1700

1

2

3

4

1

2

3

4

3.查询表dept_partition

hivegt select * from dept_partition

1

1

------------------------ ----------------------- --------------------- ----------------------- --

| dept_ | dept_partition.dname | dept_partition.loc | dept_ |

------------------------ ----------------------- --------------------- ----------------------- --

| 10 | ACCOUNTING | 1700 | 2019-10-19 |

| 20 | RESEARCH | 1800 | 2019-10-19 |

| 30 | SALES | 1900 | 2019-10-19 |

| 40 | OPERATIONS | 1700 | 2019-10-19 |

| 10 | ACCOUNTING | 1700 | 2019-10-20 |

| 20 | RESEARCH | 1800 | 2019-10-20 |

| 30 | SALES | 1900 | 2019-10-20 |

| 40 | OPERATIONS | 1700 | 2019-10-20 |

------------------------ ----------------------- --------------------- ----------------------- --

1

2

3

4

5

6

7

8

9

10

11

12

1

2

3

4

5

6

7

8

9

10

11

12

4.创建临时表 tmp_dept_partition

hivegt create table tmp_dept_partition as select * from dept_partition

1

1

5.查询临时表

hivegt select * from tmp_dept_partition

1

1

---------------------------- --------------------------- ------------------------- --------------------------- --

| tmp_dept_ | tmp_dept_partition.dname | tmp_dept_partition.loc | tmp_dept_ |

---------------------------- --------------------------- ------------------------- --------------------------- --

| 10 | ACCOUNTING | 1700 | 2019-10-19 |

| 20 | RESEARCH | 1800 | 2019-10-19 |

| 30 | SALES | 1900 | 2019-10-19 |

| 40 | OPERATIONS | 1700 | 2019-10-19 |

| 10 | ACCOUNTING | 1700 | 2019-10-20 |

| 20 | RESEARCH | 1800 | 2019-10-20 |

| 30 | SALES | 1900 | 2019-10-20 |

| 40 | OPERATIONS | 1700 | 2019-10-20 |

---------------------------- --------------------------- ------------------------- --------------------------- --

1

2

3

4

5

6

7

8

9

10

11

12

1

2

3

4

5

6

7

8

9

10

11

12

6.查看表结构(这个时候分区表已经转换为非分区表了)

hivegt show create table tmp_dept_partition

1

1

---------------------------------------------------- --

| createtab_stmt |

---------------------------------------------------- --

| CREATE TABLE `tmp_dept_partition`( |

| `deptno` int, |

| `dname` string, |

| `loc` string, |

| `month` string)

1

2

3

4

5

6

7

8

1

2

3

4

5

6

7

8

中建表 dept_partition

mysqlgt drop table if exists dept_partition

create table dept_partition(

`deptno` int,

`dname` varchar(20),

`loc` varchar(20),

`month` varchar(50))

1

2

3

4

5

6

1

2

3

4

5

6

8.使用sqoop导入到MySQL

bin/sqoop export

--connect jdbc:mysql://hadoop01:3306/partitionTb

--username root

--password 123456

--table dept_partition

--num-mappers 1

--export-dir /user/hive/warehouse/hive_db.db/tmp_dept_partition

--input-fields-terminated-by

版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。