--direct 只支持mysql 5.0 + 和postgresql 8.3+(只是import) jdbc的jar包需要放在$SQOOP_HOME/lib目录下 mysql zeroDateTimeBehavior mysql允许DATE列使用'0000-00-00\' 如果不处理sqoop默认给转换为null 当然你也可以自己指定为 round,自动转换为('0001-01-01\') $ sqoop import --table foo \ --connect jdbc:mysql://db.example.com/someDb?zeroDateTimeBehavior=round mysql UNSIGNED 列 如果是UNSIGNED的,它是介于0 and ^ ()的,但是数据库会告诉sqoop,这是整形 整形的大小是介于- and \+2147483647的,超过214748364的,它处理不了。 --direct模式不支持BLOB和CLOB,不支持视图 为了性能,一般的是32MB提交一次,可以通过 -D sqoop.mysql.export.checkpoint.bytes=size来指定 它的单位是bytes,设置为0,就禁用检查点了。 在对生产环境导入数据时,用户也在用,我们通过stage表来解决稳定性的问题,肯定会对生产环境产生影响 我们可以通过设置 -D sqoop.mysql.export.sleep.ms=time 参数(单位毫秒)来让它停止一段时间 每传输sqoop.mysql.export.checkpoint.bytes个字节就休息一段时间 oracle部分 sqoop支持 ojdbc6.jar oracle当中的DATE和TIME,都会当做是TIMESTAMP值,sqoop会当做java.sql.Timestamp来存储 当把数据导回到数据库的时候,sqoop会把它转换为 yyyy-mm-dd HH:MM:SS.ffffffff格式 但是你只希望yyyy-mm-dd格式 时区,默认是GMT $ sqoop import -D oracle.sessionTimeZone=America/Los_Angeles \ --connect jdbc:oracle:thin:@//db.example.com/foo --table bar hive和sql的数据类型匹配 DATE,TIME,TIMESTAMP 会被当做是字符串处置, NUMERIC和DECIMAL会被认为是double sqoop会提醒你精度丢失了 Microsoft SQL特殊的参数 --schema <name> Scheme name that sqoop should use. Default is "dbo". --table-hints <hints> Table hints that Sqoop should use for data movement. $ sqoop import ... --table custom_table -- --schema custom_schema $ sqoop import ... --table custom_table -- --table-hints NOLOCK PostgreSQL $ sqoop export (generic-args) --connection-manager org.apache.sqoop.manager.PGBulkloadManager (export-args) 支持参数和例子 Property Description mapred.reduce.tasks map数量 pgbulkload.bin pg_bulkoad binary安装路径,每一台机器都有 pgbulkload.check.constraints 检查约束,默认是true pgbulkload.parse.errors 在转义,加密,过滤,检查约束,数据类型转换中产生的错误的最大数,默认是无穷大 pgbulkload.duplicate.errors 数据重复的忍耐值. 重复值在数据库中存储是badfile,默认是无穷大 pgbulkload.filter 转换每一行为输入的数据 Here is a example of complete command line. $ sqoop export \ -Dmapred.reduce.tasks= -Dpgbulkload.bin="/usr/local/bin/pg_bulkload" \ -Dpgbulkload.input.field.delim=$'\t' \ -Dpgbulkload.check.constraints="YES" \ -Dpgbulkload.parse.errors="INFINITE" \ -Dpgbulkload.duplicate.errors="INFINITE" \ --connect jdbc:postgresql://pgsql.example.net:5432/sqooptest \ --connection-manager org.apache.sqoop.manager.PGBulkloadManager \ --table test --username sqooptest --export-