Sqoop参数使用大全
最近看了以前写的Sqoop脚本,就顺手整理一下数据导入导出的相关参数使用方法及解释。
| 参数 | 解释 |
| --connect <jdbc-uri> | 关系数据库连接地址,比如mysql的 jdbc:mysql://xx.x.35.xx:3306/mytest |
| --connection-manager <class-name> | 连接管理者DriverManager,一般都是用默认的,不用特意设置 |
| --driver <class-name> | 驱动类,都是用默认的,不用特意设置 |
| --hadoop-home <dir> | 如果指定该参数值,则会覆盖掉sqoop-env.sh的值 |
| --help | 帮助文档 |
| -P | 从控制台读取输入的密码,在执行命令时再输入密码 |
| --password | 输入关系数据库密码 |
| --username | 输入关系数据库的账号 |
| --verbose | 打印运行的详细信息 |
| --connection-param-file <filename> | 指定存储数据库连接参数的属性文件,可不设置,指定默认值 |
| --append | 追加数据到已经存在的数据集HDFS,使用直接添加--append即可 |
| --as-avrodatafile | 导入数据到avro格式文件 |
| --as-sequencefile | 将数据导入到一个sequence文件中 |
| --as-textfile | 将数据导入到一个普通文本文件中 |
| --boundary-query <statement> | 边界查询,也就是在导入前先通过SQL查询得到一个结果集,boundary--query 'select id,name from test where id=999' |
| --columns <col,col,col…> | 指定要导入的字段 |
| --direct | 快速模式,使用数据库自带的导入导出工具,官网介绍这样更快 |
| --direct-split-size <n> | direct导入的基础上,对导入的流按字节数分块,可实现把大文件拆分为多个小文件 |
| --inline-lob-limit <n> | 设置大对象数据类型的最大值 |
| -m,--num-mappers <n> | 设置map个数,不能大于节点个数 |
| -e,--query <statement> |
从查询结果中导入数据,该参数使用需指定--target-dir,在查询语句中一定要有where条件且在where条件中需要包含$CONDITIONS,示例:--query 'SELECT a.*, b.* FROM a JOIN b on (a.id == b.id) WHERE $CONDITIONS' \ --split-by a.id --target-dir /user/foo/joinresults |
| --split-by <column-name> | 设置切分数据的字段,一般为主键 |
| --table <table-name> | 关系数据库表名 |
| --target-dir <dir> | 指定的hdfs路径 |
| --warehouse-dir <dir> | --target-dir不能同时使用,指定数据导入的hdfs目录 |
| --where <where clause> | 过滤条件 |
| -z/--compress | 设置压缩算法,比如gzip |
| --compression-codec <c> | 压缩编码,默认为gzip |
| --null-string <null-string> | 不指定null字符串会被使用 |
| --null-non-string <null-string> | 不指定null字符串会被使用 |
| --map-column-java <mapping> | 重写SQL到java类型的映射,--map-column-java id=String,value=Integer |
| --map-column-hive | 重写Hive到java类型的映射 |
| --check-column (col) | 用来判断增量导入的字段 |
| --incremental (mode) | append追加模式和lastmodified最后修改时间两种模式,比如指定大于last-value的值 |
| --last-value (value) | 上次导入的最大值 |
| --enclosed-by | 给字段值前加上指定的字符 |
| --escaped-by <char> | 对字段中的双引号加转义符 |
| --fields-terminated-by <char> | 设定每个字段是以什么符号作为结束,默认为逗号 |
| --lines-terminated-by <char> | 设定每行记录之间的分隔符,默认是\n |
| --mysql-delimiters | Mysql默认的分隔符设置,字段之间以逗号分隔,行之间以\n分隔,默认转义符是\ |
| --optionally-enclosed-by <char> | 给带有双引号或单引号的字段值前后加上指定字符 |
| --input-enclosed-by <char> | 对字段值前后加上指定字符 |
| --input-escaped-by <char> | 对含有转移符的字段做转义处理 |
| --input-fields-terminated-by <char> | 字段之间的分隔符 |
| --input-lines-terminated-by <char> | 行之间的分隔符 |
| --input-optionally-enclosed-by <char> | 给带有双引号或单引号的字段前后加上指定字符 |
| --hive-delims-replacement <arg> | 用自定义的字符串替换掉数据中的\r\n等 |
| --hive-drop-import-delims | 在导入数据到hive时,去掉数据中的\r\n等字符 |
| --hive-partition-key | 分区字段,默认为string |
| --hive-partition-value | 指定分区字段的值 |
| --hive-home | hive安装目录,该参数覆盖之前默认配置的目录 |
| --hive-overwrite | 覆盖Hive中存在的数据 |
| --create-hive-table | 默认为false,如果目标表存在,创建表会失败 |
| --hive-table | hive表名,默认为mysql的表名 |
| --table | 指定关系数据库的表名 |
| --hbase-create-table | 创建Hbase表 |
| --hbase-row-key | 指定字段作为rowkey,复合键用逗号隔开 |
| --hbase-table | 指定hbase表名 |
| --column-family | 设置hbase的列族 |
| --bindir | 指定生成的java文件和jar包的输出路径 |
| --class-name | 设置生成的java文件的名称 |
| --jar-file | Codegen工具置为不可用,使用指定的jar包 |
| --outdir | 生成的java文件存放路径 |
| --package-name | 报名,比如com.test会生成com和test两级目录 |
| --update-key | 更新的列名称,多个用逗号隔开 |
| --update-mode | 指定更新策略,包括:updateonly(默认)、allowinsert |
| --staging-table | 在数据导出到数据库之前,数据临时存放的表名称 |
| --clear-staging-table | 清除工作区中临时存放的数据 |
| --batch | 使用批量模式导出 |
| --input-optionally-enclosed-by | 给带有双引号或单引号的字段前后加上指定字符 |


浙公网安备 33010602011771号