Sqoop工具利用(导入导出数据)

    技术2022-07-11  76

    sqoop导入导出数据至目标地址

    查看数据库列表进mysql容器查看导入到HDFS导入到HDFS加条件使用query方式导入数据到HDFS导入数据到Hive导入数据到hbase将hdfs文件系统的数据导出到mysql表中先创建指定表执行导入的命令

    查看数据库列表

    [root@test200 ~]# sqoop list-databases \ --connect jdbc:mysql://192.168.48.141:3306/ \ --username root \ --password cjh123

    进mysql容器查看

    docker exec -it mysql bash mysql -uroot -pcjh123 docker cp ./retail_db.sql mysql:/home/ source /home/retail_db.sql

    导入到HDFS

    [root@test200 ~]# sqoop import \ --connect jdbc:mysql://192.168.48.141:3306/retail_db \ --username root \ --password cjh123 \ --driver com.mysql.jdbc.Driver \ --table customers \ --target-dir /data/customers

    导入到HDFS加条件

    # target-dir:创建指定目录 [root@test200 ~]# sqoop import \ --connect jdbc:mysql://192.168.48.141:3306/retail_db \ --username root \ --password cjh123 \ --driver com.mysql.jdbc.Driver \ --table customers \ --target-dir /data/customers # 下面加了 m 是分片数量 [root@test200 ~]# sqoop import \ --connect jdbc:mysql://192.168.48.141:3306/retail_db \ --username root \ --password cjh123 \ --driver com.mysql.jdbc.Driver \ --table orders \ --where "order_id< 50" \ --target-dir /data/orders1 \ --m 1 # delete-target-dir:删除指定目录 [root@test200 ~]# sqoop import \ --connect jdbc:mysql://192.168.48.141:3306/retail_db \ --username root \ --password cjh123 \ --driver com.mysql.jdbc.Driver \ --table orders \ --where "order_id< 150" \ --delete-target-dir \ --target-dir /data/orders1 \ --m 1

    使用query方式导入数据到HDFS

    [root@cjh1 ~]# sqoop import \ --connect jdbc:mysql://192.168.48.141:3306/retail_db \ --username root \ --password cjh123 \ --driver com.mysql.jdbc.Driver \ --query "select * from orders where order_status='CLOSED' and \$CONDITIONS" \ --split-by order_status \ --delete-target-dir \ --target-dir /data/orders2 \ --m 3 # 通过指定列:columns [root@cjh1 ~]# sqoop import \ --connect jdbc:mysql://192.168.48.141:3306/retail_db \ --username root \ --password cjh123 \ --driver com.mysql.jdbc.Driver \ --table orders \ --columns "order_id,order_date,order_customer_id" \ --delete-target-dir \ --target-dir /data/orders3 \ --m 1

    导入数据到Hive

    [root@cjh1 ~]# sqoop import \ --connect jdbc:mysql://192.168.48.141:3306/retail_db \ --username root \ --password cjh123 \ --driver com.mysql.jdbc.Driver \ --table orders \ --hive-import \ --delete-target-dir \ --hive-database retail_db \ --create-hive-table \ --hive-table orders \ --m 1

    导入数据到hbase

    [root@cjh1 ~]# sqoop import \ --connect jdbc:mysql://192.168.48.141:3306/retail_db \ --username root \ --password cjh123 \ --driver com.mysql.jdbc.Driver \ --table products \ --columns "product_id,product_name,product_description" \ --hbase-create-table \ --hbase-table products \ --column-family data \ --hbase-row-key product_id \ --m 3

    将hdfs文件系统的数据导出到mysql表中

    先创建指定表

    CREATE TABLE `orders_tmp`( `order_id` int(11) NOT NULL AUTO_INCREMENT, `order_date` datetime NOT NULL, `order_customer_id` INT(11), `order_status` varchar(45), PRIMARY KEY(`order_id`) );

    执行导入的命令

    [root@cjh1 ~]# sqoop export \ --connect jdbc:mysql://192.168.48.141:3306/retail_db \ --username root \ --password cjh123 \ --driver com.mysql.jdbc.Driver \ --table orders_tmp \ --export-dir /data/orders1 \ --m 1

    ps:望多多支持,后续更新中。。。

    Processed: 0.012, SQL: 9