shell—如何在python中循环和传递长表列表的参数

zhte4eai  于 2021-06-24  发布在  Hive
关注(0)|答案(0)|浏览(273)

我有一个表有3000多个表,当我为所有表生成ddl时,它会给我一个错误“/user/hive argument list to long”。
我正在尝试编辑我的代码,先扫描前1000个,然后再扫描下1000个,然后再扫描剩余的1000个。这样,论点就可以分裂了。
这是我的密码:

hiveDBName=$1;

 showcreate="show create table "
 showpartitions="show partitions "
 terminate=";"
 tables=`hive -e "use $hiveDBName;show tables;"`
 tab_list=`echo "${tables}"`

  for list in $tab_list
  do
         echo "Generating table script for " #${hiveDBName}.${list}
          showcreatetable=${showcreatetable}${showcreate}${hiveDBName}.${list}${terminate}

        done

        echo " ====== Create Tables ======= : "# $showcreatetable

 #Creates a filter ddls
 hive -e "use $hiveDBName; ${showcreatetable}"> a.sql
 #Removes the Warn: from the file
 grep -v "WARN" a.sql > /home/hive_ddls/${hiveDBName}_extract_all_tables.sql

 echo "Removing Filter File"
 #Remove Filter file
 rm -f a.sql

# Puts a ; after each create table statement in the document

sed -i '/transient/s/$/;/' "/home/hive_ddls/${hiveDBName}_extract_all_tables.sql"

有没有什么方法可以在上面的脚本中放入for循环,这样它就可以将输出分成数千个部分来运行呢?

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题