sqoop import connect jdbc:mysql://mysql.example.com/sqoop --username sqoop --password sqoop --table cities
--connect:指定JDBC URL
--username/password:mysql数据库的用户名
--table:要读取的数据库表
sqoop import connect jdbc:mysql://mysql.example.com/sqoop --username sqoop --password sqoop --table cities --target-dir /etc/input/cities
--target-dir:指定数据导出后的目录,这样指定的目录只是一次会话的
sqoop import connect jdbc:mysql://mysql.example.com/sqoop --username sqoop --password sqoop --table cities --warehouse-dir /etl/input/
--warehouse-dir:指定数据导出后的目录,会根据表名来自动生成/etl/input/cities,只需要一次指定,后面的每次导出都是在此目录下,以表名命名的。
sqoop import connect jdbc:mysql://mysql.example.com/sqoop --username sqoop --password sqoop --table cities --where ''country='usa'''
--where:指定导出部分数据的条件
sqoop import connect jdbc:mysql://mysql.example.com/sqoop --username sqoop --table cities -P
-p:动态的数据密码,安全
sqoop import connect jdbc:mysql://mysql.example.com/sqoop --username sqoop --table cities --password-file my-sqoop-password
--password-file:指定密码文件,安全
sqoop import connect jdbc:mysql://mysql.example.com/sqoop --username sqoop --password sqoop --table cities --as-sequencefile
--as-sequencefile:指定导出的数据以sequencefile文件格式保存
sqoop import connect jdbc:mysql://mysql.example.com/sqoop --username sqoop --password sqoop --table cities --as-avrodatafile
--as-avrodatafile:指定导出的数据以avrodatafile文件格式保存
sqoop import connect jdbc:mysql://mysql.example.com/sqoop --username sqoop --password sqoop --table cities --num-mappers 10
--num-mappers 10:指定运行的map数据量
sqoop import connect jdbc:mysql://mysql.example.com/sqoop --username sqoop --password sqoop --table cities --null-string '\\N' --null-non-string '\\N'
--null-string '\\N' --null-non-string '\\N':指定mysql中的null在导出后以\n保存
sqoop import connect jdbc:mysql://mysql.example.com/sqoop --username sqoop --password sqoop --table cities --incremental append --check-column id --last-value 1
--incremental append:指定导出新增的数据
--check-column id:指定导出针对新增的标准是id
--last-value 1:指定从id=1之后插入的数据
export:
sqoop export -Dsqoop.export.records.per.statement=10 --connect jdbc:mysql://mysql.example.com/sqoop --username sqoop --password sqoop --table cities --export-dir cities --batch
--batch:指导入是批量的导入
-Dsqoop.export.records.per.statement=10:指定批量导入一次的数据条数
sqoop export --connect jdbc:mysql://mysql.example.com/sqoop --username sqoop --password sqoop --table cities --export-dir cities --staging-table staging_cities
--staging-table:指定导入时的零时表,只有当数据完全导入成功后,才会将数据导入到目标表中,如果中间出现失败则会将零时表中的数据删除,这样就保证了原子性,从而不会出现脏读
sqoop export --connect jdbc:mysql://mysql.example.com/sqoop --username sqoop --password sqoop --table cities --export-dir cities --update-key id
--update-key:指定依据什么字段来更新表,即当id一样时,则就更新这条记录
sqoop export --connect jdbc:mysql://mysql.example.com/sqoop --username sqoop --password sqoop --table cities --export-dir cities --update-key id --update-mode allowinsert
--update-key:指定依据什么字段来更新表,即当id一样时,则就更新这条记录
-update-mode allowinsert:指定除了可以更新数据之外,其余不相等的数据同样可以插入表中
sqoop export --connect jdbc:mysql://mysql.example.com/sqoop --username sqoop --password sqoop --table cities --export-dir cities --columns country,city
--columns:指定要插入的列名
sqoop与hive结合:
sqoop import --connect jdbc:mysql://mysql.example.com/sqoop --username sqoop --password sqoop --table cities --hive-import
--hive-import:指定从hive中导出
sqoop与hbase结合:
sqoop export --connect jdbc:mysql://mysql.example.com/sqoop --username sqoop --password sqoop --table cities --hbase-table cities --column-family world
--hbase-table:指定hbase的表名
--column-family:指定hbase表的列族名