我正在尝试使用自由格式查询sqoop一些数据,它只是我的查询很长(几个列的几个JOIN和PIVOT)并且在Sqoop命令本身中包含它真的很麻烦。我知道我可以创建一个.props文件并将我的查询放在那里。我的file.props
形式为:
import
--connect
jdbc:oracle:thin:@hostname:port:sid
--username
user
--password
password1
--query
'SELECT col1, col2, ..., col18,"'pivotedcol1'", ..., "'pivotedcol21'"\
FROM (SELECT col1, ..., col18, DEFINITIONS,\
to_char(to_date(TIME),'DD.MM.YY', 'YYYY-MM-DD') \
FROM table1\
LEFT OUTER JOIN table2\
ON table2.colX = table1.colX\
LEFT OUTER JOIN table3\
ON table2.colY = table3.colX\
LEFT OUTER JOIN table4\
ON table4.colX = table1.colX\
LEFT OUTER JOIN table5\
ON table5.colX = table4.colY\
LEFT OUTER JOIN table6\
ON table5.colY = table6.colX\
LEFT OUTER JOIN table7\
ON table7.colX = table1.colX\
LEFT OUTER JOIN table8\
ON table7.colY = table8.colX\
WHERE ROWNUM <= 45000 AND $CONDITIONS)\
PIVOT (MAX(TIME) FOR DEFINITIONS IN ('pivotedcol1', ..., 'pivotedcol21'))'
--as-avrodatafile
--verbose
--target-dir
directory/freeform
运行后
sqoop --options-file file.props
我收到错误
ERROR sqoop.Sqoop: Error while expanding arguments java.lang.Exception: Multiline quoted strings not supported in file(file.props)
哪里出错了?我能做得更好吗?
答案 0 :(得分:0)
您需要在这里做两件事。
在$ CONDITIONS前面放置反斜杠。
Hero