Sqoop1.4.6使用指南

sqoop使用指南

一、sqoop介绍

Sqoop是一个用来将Hadoop和关系型数据库中的数据相互转移的工具。
可以将一个关系数据库(例如:MySQL,Oracle等)中的数据导进到Hadoop的HDFS文件系统中,也可以将HDFS的数据导进关系型数据库。

二、sqoop数据导入(以SQLServer数据库为例)

(1)、全表导入
全表导入,顾名思义就是将关系型数据库指定的表数据导入到HDFS文件系统的根目录。
sqoop import --connect 'jdbc:sqlserver://192.168.1.116:1433;database=movielens' --username sa --password 123 --table glass
    #--connect:指定数据库JDBC链接字符串并且指定数据库名jdbc:sqlserver://192.168.1.116:1433;database=movielens
    #--username:指定数据库用户名
    #--password:指定数据库密码
    #--table:指定数据库表名
(2)、全表导入到HDFS文件系统指定文件夹
顾名思义,就是将关系型数据库指定的表数据导入到HDFS文件系统的指定文件目录。指定的文件夹必须不能存在,sqoop会拒绝向已经存在的文件夹写入,以避免覆盖数据。
sqoop import --connect 'jdbc:sqlserver://192.168.1.116:1433;database=movielens' --username sa --password 123 --table glass --target-dir /movielens/glass
    #--connect:指定数据库JDBC链接字符串并且指定数据库名jdbc:sqlserver://192.168.1.116:1433;database=movielens
    #--username:指定数据库用户名
    #--password:指定数据库密码
    #--table:指定数据库表名
    #--target-dir:指定存放数据的HDFS文件系统目录
(3)、部分表导入到HDFS文件系统
顾名思义,就是将关系型数据库指定的表数据中的部分数据导入到HDFS文件系统中。
sqoop import --connect 'jdbc:sqlserver://192.168.1.116:1433;database=movielens' --username sa --password 123 \
    --query 'SELECT top 10 * FROM glass WHERE $CONDITIONS' --split-by 'no' --target-dir /movielens/glass
    #--query :query查询语句'SELECT top 10 * FROM glass WHERE $CONDITIONS',以确定需要导入的数据。
    #--split-by 'no':

    sqoop import --connect 'jdbc:sqlserver://192.168.1.116:1433;database=movielens' --username sa --password 123 \
    --table glass --where "no = '1'" --target-dir /movielens/glass1
    #--where:选取"no = '1'"的这条数据导入到HDFS文件系统
(4)、保护密码
顾名思义,就是在输入数据库的密码的时候,命令sqoop从键盘键入中获取密码
sqoop import --connect 'jdbc:sqlserver://192.168.1.116:1433;database=movielens' --username sa -P \
    --table glass --where "no = '1'" --target-dir /movielens/glass2
    #--P:命令sqoop从键盘键入中获取密码
(5)、使用其他符号分割数据字段
顾名思义,在sqoop传导数据时,默认的数据字段分割符为',',用户可以自定义数据字段分割符。
sqoop import --connect 'jdbc:sqlserver://192.168.1.116:1433;database=movielens' --username sa --password 123 \
    --table glass --where "no = '1'" --target-dir /movielens/glass6 --fields-terminated-by '\t'
    #--fields-terminated-by:使用用户自定义的符号来作为字段分割符

    sqoop import --connect 'jdbc:sqlserver://192.168.1.116:1433;database=DocContent_F10News' --username sa --password 123 \
    --table DocContent --where " DOCID = '888888'" --split-by 'DOCID' --target-dir /DocContent_F10News/DocContent 


    sqoop import --connect 'jdbc:sqlserver://192.168.1.116:1433;database=DocContent_F10News' --username sa --password 123 \
    --table DocContent --where " DOCID = '888888'" --split-by 'DOCID' --target-dir /DocContent_F10News/DocContent3 \
    --fields-terminated-by '#'  --mysql-delimiters

    --hive-drop-import-delims     Drops \n, \r, and \01 from string fields when importing to Hive. 
    --hive-drop-import-delims:只能删除字段中的\n, \r, and \01
暂时还没有找到方法来清除字段内的'\t'

你可能感兴趣的:(hadoop)