我在服务器上有一个位置,这里有2个txt格式的文件。我们需要自动化以下条件的过程: 1)任一文件都可用于加载到HIVE表中。 2)两个文件也都可以加载。但是在这种情况下,我们需要将两个文件合并为一个文件,然后加载到HIVE表中。
根据要求,以下是我提供的代码。但这不起作用:
#!/bin/bash
cd <path_to/source_files/>
file1="file1.txt"
file2="file2.txt"
#file3=$file1 + $file2
if [$file1 and $file2 ]
then
cd <path_to>/source_files/
echo "Loading both the files"
cat file* > merge.txt
hive << EOF
use sprint1;
TRUNCATE TABLE sprint1.SET;
LOAD DATA LOCAL INPATH '<path_to>/source_files/merge.txt' INTO TABLE SET;
INSERT INTO TABLE hist_SET select * from SET;
EOF
rm -rf ltd_al_merge.txt
fi
if [ -f "$file1" ]
then
echo "$file1 existing in source."
hive << EOF
use sprint1;
TRUNCATE TABLE sprint1.SET;
LOAD DATA LOCAL INPATH '<path_to>/source_files/file1.txt' INTO TABLE SET;
INSERT INTO TABLE hist_SET select * from SET;
EOF
else
echo "$file1 NOT EXISTS in the source"
fi
if [ -f "$file2" ]
then
echo "$file2 existing in source "
hive << EOF
use sprint1;
TRUNCATE TABLE sprint1.SET;
LOAD DATA LOCAL INPATH '<path_to>/source_files/file2.txt' INTO TABLE SET;
INSERT INTO TABLE hist_SET select * from SET;
执行代码时无法理解第一个“ if”。请让我知道我的错误。
谢谢
答案 0 :(得分:0)
要检查文件是否存在,您必须像下面这样使用
if [[ -f $file1 && -f $file2 ]]
then
echo "file1 - exists"
echo "file2 - exists"
fi
请注意“ [[”和“]]”周围的空格。它们是exe文件,所以应该用空格包围。