我的sql表是mysql>从订单中选择*;+--------+
bis0qfac1#
--+
8nuwlpux2#
bnl4lu3b3#
---+
agxfikkp4#
flseospp5#
-+
vxf3dgd46#
---+| 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 |+--------+
kknvjkwl7#
---+|订单号|采购金额|订单日期|客户号|销售员号||+--------+
eqfvzcg88#
dy1byipe9#
是,--lastvalue也包含在结果中。in—增量导入2种可用模式:i)append ii)lastmodified追加:在这种模式下,它只检查--lastvalue并从lastvalue开始导入。-->它不会导入任何以前的值,即使它们已更新lastmodified:它也与append模式相同,但是在这里它导入新行,如果更新了,也导入以前的行。注意:lastmodified只处理日期或时间戳类型的列
kmynzznz10#
ifsvaxew11#
vfh0ocws12#
---+我运行了一个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模式。当源表的行可能被更新时,您应该使用这个选项,并且每次这样的更新都会将上次修改的列的值设置为当前时间戳。在check列中保存的时间戳比用--last值指定的时间戳更新的行将被导入我不希望输出中出现日期为“2012-09-10”的列。但是我的输出,如下所示,[manojpurohit17834325@ip-172-31-38-146 ~]$hadoop fs-cat sqoopimp2/*70001,150.50,2012-10-05,3005,500270002,65.26,2012-10-05,3002,500170003,999.99,2012-10-10,3009,500370007,948.50,2012-09-10,3005,500270009,270.65,2012-09-10,3001,500570008,999.99,2012-09-10,3002,500170010,999.99,2012-10-10,3004,5006包含日期为20125-10-10的行。注意:输出目录在前面不存在,它是由这个sqoop执行创建的。从这个执行中,我看到输出中包含了--last modified中的日期,这与手册中提到的相反。请帮助我理解这种差异,并纠正我,如果我遗漏了什么。
zed5wv1013#
13条答案
按热度按时间bis0qfac1#
--+
8nuwlpux2#
--+
bnl4lu3b3#
---+
agxfikkp4#
---+
flseospp5#
-+
vxf3dgd46#
---+
| 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 |
+--------+
kknvjkwl7#
---+
|订单号|采购金额|订单日期|客户号|销售员号||
+--------+
eqfvzcg88#
-+
dy1byipe9#
是,--lastvalue也包含在结果中。in—增量导入2种可用模式:i)append ii)lastmodified
追加:在这种模式下,它只检查--lastvalue并从lastvalue开始导入。-->它不会导入任何以前的值,即使它们已更新
lastmodified:它也与append模式相同,但是在这里它导入新行,如果更新了,也导入以前的行。注意:lastmodified只处理日期或时间戳类型的列
kmynzznz10#
--+
ifsvaxew11#
-+
vfh0ocws12#
---+
我运行了一个sqoop导入
根据以下sqoop 1.4.6手册,
sqoop支持的另一种表更新策略称为lastmodified模式。当源表的行可能被更新时,您应该使用这个选项,并且每次这样的更新都会将上次修改的列的值设置为当前时间戳。在check列中保存的时间戳比用--last值指定的时间戳更新的行将被导入
我不希望输出中出现日期为“2012-09-10”的列。但是我的输出,如下所示,
[manojpurohit17834325@ip-172-31-38-146 ~]$hadoop fs-cat sqoopimp2/*
70001,150.50,2012-10-05,3005,5002
70002,65.26,2012-10-05,3002,5001
70003,999.99,2012-10-10,3009,5003
70007,948.50,2012-09-10,3005,5002
70009,270.65,2012-09-10,3001,5005
70008,999.99,2012-09-10,3002,5001
70010,999.99,2012-10-10,3004,5006
包含日期为20125-10-10的行。注意:输出目录在前面不存在,它是由这个sqoop执行创建的。
从这个执行中,我看到输出中包含了--last modified中的日期,这与手册中提到的相反。请帮助我理解这种差异,并纠正我,如果我遗漏了什么。
zed5wv1013#
---+