zoukankan      html  css  js  c++  java
  • Sqoop帮助文档

    1、列出MySql数据库中的所有数据库

    1 $ sqoop list-databases --connect jdbc:mysql://192.168.254.105:3306/--username root --password root
    注意:列出所有数据库操作只能作用于HSQLDB、MySQL、Oracle数据库上,特别需要注意的是,当需要列出Oracle上的所有数据库时,连接Oracle数据库的用户必须具备DBA权限。

    2、列出MySql数据库中指定库中的所有表

    1 $ sqoop list-tables --connect jdbc:mysql://192.168.254.105:3306/sqoop --username root --password root

    3、将关系型数据库的表结构复制到Hive中

    1 $ sqoop create-Hive-table --connect jdbc:mysql://192.168.254.105:3306/test --table users --username dyh --password 000000--hive-table users --fields-terminated-by "	" --lines-terminated-by "
    ";
    参数说明:
    • --fields-terminated-by "001"  是设置每列之间的分隔符,"001"是ASCII码中的1,它也是hive的默认行内分隔符, 而sqoop的默认行内分隔符为"," 
    • --lines-terminated-by " "  设置的是每行之间的分隔符,此处为换行符,也是默认的分隔符;
    注意:只是复制表的结构,表中的内容没有复制

    4、将数据从关系数据库导入文件到hive表中

    1 $ sqoop import --connect jdbc:mysql://192.168.254.105:3306/test --username dyh --password 000000--table users --hive-import --hive-table users -m 2--fields-terminated-by "001";
    参数说明:
    • -m 2 表示由两个map作业执行;
    • --fields-terminated-by "001"  需同创建hive表时保持一致;

    5、将hive中的表数据导入到mysql数据库表中

    1 $ sqoop export --connect jdbc:mysql://192.168.254.105:3306/test --username dyh --password 000000--table users --export-dir /user/hive/warehouse/users/part-m-00000--input-fields-terminated-by '001'
    注意:
    • 在进行导入之前,mysql中的表userst必须已经提起创建好了。
    • jdbc:mysql://192.168.254.105:3306/test中的IP地址改成localhost会报异常

    6、将数据从关系数据库导入文件到hive表中,--query 语句使用

    1 $ sqoop import --append --connect jdbc:mysql://192.168.254.105:3306/test --username dyh --password 000000--query "select id,age,name from userinfos where $CONDITIONS"-m 1--target-dir /user/hive/warehouse/userinfos2 --fields-terminated-by ",";

    7、将数据从关系数据库导入文件到hive表中,--columns  --where 语句使用

    1 $ sqoop import --append --connect jdbc:mysql://192.168.254.105:3306/test --username dyh --password 000000--table userinfos --columns "id,age,name"--where "id > 3 and (age = 88 or age = 80)"-m 1--target-dir /user/hive/warehouse/userinfos2 --fields-terminated-by ",";
    注意:--target-dir /user/hive/warehouse/userinfos2   可以用  --hive-import --hive-table userinfos2 进行替换

    8、Sqoop查看版本信息

    1 $ sqoop version
    2 Sqoop{revnumber}
    3 git commit id 46b3e06b79a8411320d77c984c3030db47dd1c22
    4 Compiled by aaron@jargon on MonMay1713:43:22 PDT 2010

    9、Sqoop实例

    1)导入Mysql的employee_id,first_name,last_name,job_title到Hive中

    1 $ sqoop import --connect jdbc:mysql://db.foo.com/corp --table EMPLOYEES --columns "employee_id, first_name, last_name, job_title"

    2)使用8个任务导入数据

    1 $ sqoop import --connect jdbc:mysql://db.foo.com/corp --table EMPLOYEES -m 8

    3)保存数据到序列文件中,并设置生成的类名为“com.foocorp.Employee”

    1 $ sqoop import --connect jdbc:mysql://db.foo.com/corp --table EMPLOYEES --class-name com.foocrop.Employee --as-sequencefile

    4)文本导入时指定分隔符

    $ sqoop import --connect jdbc:mysql://db.foo.com/corp --table EMPLOYEES --fields-terminated-by '	'--lines-terminated-by '
    ' --optionally-enclosed-by'"'

    5)导入数据到Hive

    $ sqoop import --connect jdbc:mysql://db.foo.com/corp --table EMPLOYEES --hive-import

    6)根据条件导入数据

    1 $ sqoop import --connect jdbc:mysql://db.foo.com/corp --table EMPLOYEES --where "start_date > '2016-12-01'"

    7)指定列进行工作量分隔

    1 $ sqoop import --connect jdbc:mysql://db.foo.com/corp --table EMPLOYEES --split-by dept_id

    8)导入增量数据

    1 $ sqoop import --connect jdbc:mysql://db.foo.com/corp --table EMPLOYEES --where 'id>100000'--target-dir /incremental_dataset --append

    9)校验mysql数据行数和导入hdfs中的行数

    1 $ sqoop import --connect jdbc:mysql://db.foo.com/corp --table EMPLOYEES --validate

    10)导入mysql的所有表

    1 $ sqoop import-all-tables --connect jdbc:mysql://db.foo.com/corp

    11)从文件中读取数据库密码

    1 $ sqoop import-mainframe --connect <host>--username david --password-file ${user.home}/.password

    12)创建Job

     1 $ sqoop job --create myjob --import --connect jdbc:mysql://example.com/db --table mytable
     2 #查看以保存的Job
     3 $ sqoop job --list
     4 Available jobs:
     5 myjob
     6 #查看Job详情
     7 $ sqoop job --show myjob
     8 Job: myjob
     9 Tool: import
    10 Options:
    11 ----------------------------
    12 direct.import = false
    13 codegen.input.delimiters.record = 0
    14 hdfs.append.dir = false
    15 db.table = mytable
    • 执行Job
    1 $ sqoop job --exec myjob
    2 10/08/1913:08:45 INFO tool.CodeGenTool:Beginning code generation
    3 ...

    13)执行操作可以重写job的参数,通过--option方式来实现。例如,数据库需要用户名和密码,可以使用如下方式:

    1 $ sqoop job --exec myjob --username someuser -P
    2 Enter password:
    3 10/08/1913:08:45 INFO tool.CodeGenTool:Beginning code generation
    4 ...

    14)查询employees表的十条数据

    1 $ sqoop eval--connect jdbc:mysql://db.example.com/corp --query "SELECT * FROM employees LIMIT 10"

    15)插入一条数据到foo表中

    1 $ sqoop eval--connect jdbc:mysql://db.example.com/corp -e "INSERT INTO foo VALUES(42, 'bar')"

    16)MySQL日期‘0000-00-00’转换方式:

    • 转换为null:convertToNull
    • 客户端抛出异常
    • 转换为最近的合法日期(0001-01-01):round
    1 $ sqoop import --table foo --connect jdbc:mysql://db.example.com/someDb?zeroDateTimeBehaior=round

    17)Mysql快速导入

    MySQL直连器允许使用mysqldump和mysqlimport工具函数进行快速的导入和导出,而不是使用select和insert方式

    1 $ sqoop import --connect jdbc:mysql://db.foo.com/corp --table EMPLOYEES --direct

    18)Mysql快速的导入指定编码方式为utf8

    1 $ sqoop import --connect jdbc:mysql://db.foo.com/corp --table EMPLOYEES --direct -- --default-character-set=utf8
  • 相关阅读:
    【原创】谈一个数学教育专业的IT职业生涯
    应用程序测试方法与技巧
    Windows和MacOS的比较——不断完善和补充,欢迎吐槽
    【原创】Windows上应用程序报错常用分析方法总结
    职场感悟,发现言语背后的故事
    职场感悟,乐业感恩
    javadoc
    包机制的创建
    运算符
    变量和常量
  • 原文地址:https://www.cnblogs.com/yinghun/p/6222311.html
Copyright © 2011-2022 走看看