Oracle Sqoop失败,参数无法识别

Oracle Sqoop失败,参数无法识别,oracle,hive,sqoop,Oracle,Hive,Sqoop,我在HDFS中有多个文件。正在尝试加载到Oracle。使用这个脚本已经很久了。但最近同样的过程给了我错误。 以下是代码: #!/bin/bash refDate=`date --date="2 days ago" "+%Y-%m-%d"` func_data_load_to_dwh() { date if [[ ! -z `hadoop fs -ls /data/dna_data/dna_daily_summary_data/pdate=${refDate}/*

我在HDFS中有多个文件。正在尝试加载到Oracle。使用这个脚本已经很久了。但最近同样的过程给了我错误。 以下是代码

#!/bin/bash

refDate=`date --date="2 days ago" "+%Y-%m-%d"`
func_data_load_to_dwh()
{
        date
        if [[ ! -z `hadoop fs -ls /data/dna_data/dna_daily_summary_data/pdate=${refDate}/*` ]]
        then
                file=`hadoop fs -ls /data/dna_data/dna_daily_summary_data/pdate=${refDate}/|grep dna_daily_summary_data |awk '{print $NF}'`
                sqoop export --connect jdbc:oracle:thin:@//raxdw-scan:1628/raxdw --username schema_name --password 'password' --table TBL_DNA_DATA_DAILY_SUMMARY --export-dir ${file} --input-fields-terminated-by '|' --lines-terminated-by '\n' --direct
}
#_________________ main function ________________
        func_data_load_to_dwh
错误代码:

20/01/14 11:05:12 ERROR tool.BaseSqoopTool: Unrecognized argument: /data/dna_data/dna_daily_summary_data/pdate=2020-01-12/f14873b51555a17d-946772b200000029_1797907225_data.0.
20/01/14 11:05:12 ERROR tool.BaseSqoopTool: Unrecognized argument: --input-fields-terminated-by
20/01/14 11:05:12 ERROR tool.BaseSqoopTool: Unrecognized argument: |
20/01/14 11:05:12 ERROR tool.BaseSqoopTool: Unrecognized argument: --lines-terminated-by
20/01/14 11:05:12 ERROR tool.BaseSqoopTool: Unrecognized argument: \n
20/01/14 11:05:12 ERROR tool.BaseSqoopTool: Unrecognized argument: --direct
但是,如果我使用shell中的单个文件手动运行,它将运行得非常完美:

sqoop export --connect jdbc:oracle:thin:@//raxdw-scan:1628/raxdw --username schema_name --password 'password' --table TBL_DNA_DATA_DAILY_SUMMARY --export-dir /data/dna_data/dna_daily_summary_data/pdate=2020-01-12/784784ec62558fea-1d14102000000029_1144698661_data.0. --input-fields-terminated-by '|' --lines-terminated-by '\n' --direct

有点奇怪,因为它以前工作过。我所做的就是在
if
条件下更改目录。没有别的了。你能给我一些建议吗?

一些建议:打印“$文件”进行调试。同时打印整个命令,而不是执行它。只需在sqoop之前添加echo。引用变量也是一种很好的做法。例如,${file}而不是${file}。除上述建议外,如果要导出/data/dna_data/dna_daily_summary_data/pdate=2020-01-12下的所有文件,请尝试在--export dir而不是file中指定目录路径--导出目录“/data/dna\u data/dna\u daily\u summary\u data/pdate=2020-01-12”