Sqoop1.4.6使用指南

来源:互联网 发布:思途cms 6.0 编辑:程序博客网 时间:2024/06/05 18:22

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'
原创粉丝点击