Sqoop和Multiline自由格式查询

时间:2016-03-01 11:51:47

标签: sql oracle sqoop

我正在尝试使用自由格式查询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)

哪里出错了?我能做得更好吗?

1 个答案:

答案 0 :(得分:0)

您需要在这里做两件事。

  1. 为SQL查询添加双引号并删除反斜杠(/)
  2. 在$ CONDITIONS前面放置反斜杠。

    Hero
相关问题