在sqoop中传递参数

时间:2014-03-06 13:15:56

标签: apache-pig sqoop

下面是我在shell脚本中的sqoop cmd,

sqoop import --connect 'jdbc:sqlserver://190.148.155.91:1433;username=****;password=****;database=Testdb' --query 'Select DimFreqCellRelationID,OSSC_RC, MeContext, ENodeBFunction,EUtranCellFDD,EUtranFreqRelation, EUtranCellRelation FROM dbo.DimCellRelation WHERE DimFreqCellRelationID > **$maxval** and $CONDITIONS'  --split-by OSS --target-dir /testval;

在执行此命令之前,我已经为$ maxval分配了一个值,当我执行sqoop时,cmd值应该代替$ maxval传递。但那不是幸福。是否可以通过sqoop传递参数。如果您有任何建议可以实现这一逻辑,请告诉我吗?

1 个答案:

答案 0 :(得分:1)

我相信您遇到的问题是封闭不正确。使用单引号(')将禁止bash执行任何替换。如果要在参数内使用变量,则需要使用双引号(")。但是,您还必须小心,因为您不想替换$ CONDITIONS占位符。不用Sqoop试试吧:

jarcec@Odie ~ % echo '$maxval and $CONDITIONS'
$maxval and $CONDITIONS
jarcec@Odie ~ % echo "$maxval and $CONDITIONS"
 and 
jarcec@Odie ~ % echo "$maxval and $CONDITIONS"
jarcec@Odie ~ % export maxval=30
jarcec@Odie ~ % echo "$maxval and $CONDITIONS"
30 and 
jarcec@Odie ~ % echo "$maxval and \$CONDITIONS"
30 and $CONDITIONS