我的SQL表是
mysql>从订单中选择*;
+--------+-----------+------------+-------------+-------------+
|订单号|purch_amt|ord_date|customer_id|salesman_id|
+--------+-----------+------------+-------------+-------------+
|70001 | 150.50 | 2012-10-05 | 3005 | 5002 |
|70009|270.65|2012-09-10|3001|5005|
|70002 | 65.26 | 2012-10-05 | 3002 | 5001 |
|70004 | 110.50 | 2012-08-17 | 3009 | 5003 |
|70007 | 948.50 | 2012-09-10 | 3005 | 5002 |
|70005 | 999.99 | 2012-07-27 | 3007 | 5001 |
|70008 | 999.99 | 2012-09-10 | 3002 | 5001 |
|70010 | 999.99 | 2012-10-10 | 3004 | 5006 |
|70003 | 999.99 | 2012-10-10 | 3009 | 5003 |
|70012 | 250.45 | 2012-06-27 | 3008 | 5002 |
|70011 | 75.29 | 2012-08-17 | 3003 | 5007 |
|70013 | 999.99 | 2012-04-25 | 3002 | 5001 |
+--------+-----------+------------+-------------+-------------+
我运行了一个Sqoop导入
sqoop import --connect jdbc:mysql://ip-172-31-20-247:3306/sqoopex --
username sqoopuser --password <hidden> --table Orders --target-dir
SqoopImp2 --split-by ord_no --check-column ord_date --incremental
lastmodified --last-value '2012-09-10'
根据以下Sqoop 1.4.6手册,
Sqoop支持的备用表更新策略称为lastmodified模式当源表的行可能被更新时,您应该使用它,并且每次这样的更新都会将上次修改的列的值设置为当前时间戳。复选列中的时间戳比用--last值指定的时间戳更新的行将导入
我不希望输出日期为"2012-09-10"的列。然而,我的输出,如下所示,
[manojpurohit17834325@ip-172-31-38-146~]$hadoop-fs-cat SqoopImp2/*
7000115.52012-10-0530055002
70002,65.262012-10-0530025001
7000399.992012-10-1030095003
70007948.5020012-09-1030055002
70009270.652012-09-1030015005
70000899.992012-09-1030025001
7001099.992012-10-10030045006
包含日期为20125-10-10的行。注意:输出目录以前不存在,它是由这次sqoop执行创建的。
从这次执行中,我看到最后一次修改中的日期包含在输出中,这与手册中提到的内容相反。请帮我理解这个差异,如果这里遗漏了什么,请纠正我。
yes,--lastvalue也包含在结果中。in-增量导入2种可用模式:i)附加ii)上次修改的
append:在这种模式下,它只检查--lastvalue并从lastvalue开始导入。-->它没有导入任何以前的值,即使它们更新了
lastmodified:它也只与附加模式相同,但在这里它导入新行,如果更新了,也导入前几行。注意:lastmodified仅适用于日期或时间戳类型的列,仅适用于