Apache pig 在sqoop中传递参数

Apache pig 在sqoop中传递参数,apache-pig,sqoop,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, EUtranCellRel

下面是我的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传递参数。你能告诉我你对实现这一逻辑有什么建议吗?

我相信你看到的问题是封装不正确。使用单引号(')将禁止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