Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/354.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 从配置单元表生成DDL,并将每个DDL写入不同的.txt文件_Php_Python_Sql_Linux_Hive - Fatal编程技术网

Php 从配置单元表生成DDL,并将每个DDL写入不同的.txt文件

Php 从配置单元表生成DDL,并将每个DDL写入不同的.txt文件,php,python,sql,linux,hive,Php,Python,Sql,Linux,Hive,我试图学习如何为给定的配置单元数据库中的所有表自动创建DDL 例如,我有一个名为abc_db的数据库。我编写了一个配置单元脚本,将所有表写入一个名为abc_db.txt的文件中。文件中的输出是abc_db中的所有表 `hive -e 'show tables in abc_db' > abc_db.tx`t 我希望能够循环遍历它的所有表,并将每个表的DDL用各自的表名写入我的目录 这是我的开始: hive -e "show tables in abc_db" > d.txt c

我试图学习如何为给定的配置单元数据库中的所有表自动创建DDL

例如,我有一个名为abc_db的数据库。我编写了一个配置单元脚本,将所有表写入一个名为abc_db.txt的文件中。文件中的输出是abc_db中的所有表

 `hive -e 'show tables in abc_db' > abc_db.tx`t
我希望能够循环遍历它的所有表,并将每个表的DDL用各自的表名写入我的目录

这是我的开始:

hive -e "show tables in abc_db" > d.txt

cat d.txt | while read LINE;
do
  echo "## Table Name:" $LINE
  mkdir $LINE
  cd $LINE
  eval "hive -e 'show create table in $LINE' | grep -v ^$ | grep -v Logging | grep -v tab_name | tee $LINE.tables.txt"
done

鉴于上述信息,您对如何从表中自动生成所有DDL并将每个DDL写入单独的文件有何想法或出发点

根据需要进行调整。将源架构(处理架构中的所有表)和输出目录作为参数

脚本:
genddl

#!/bin/bash
SCHEMA="$1"
OUTDIR="$2"
if [[ $# -ne 2 ]]; then
  echo "Usage: $0 <schema-name> <out-dir>"
  exit 1
fi
mkdir -p "$OUTDIR"
TABLES=$(hive -e "show tables in $SCHEMA;")
for TABLE in $TABLES; do
  DDL_FILE="$OUTDIR/$TABLE-create-ddl.sql"
  echo -e "Generating DDL ...\n... table: $TABLE\n... file:  $DDL_FILE"
  hive -e "show create table $SCHEMA.$TABLE" > "$DDL_FILE"
done
echo "Done."
#/bin/bash
SCHEMA=“$1”
OUTDIR=“$2”
如果[$#-ne 2]];然后
echo“用法:$0”
出口1
fi
mkdir-p“$OUTDIR”
TABLES=$(配置单元-e“在$SCHEMA;中显示表”)
对于$TABLES中的TABLE;做
DDL_FILE=“$OUTDIR/$TABLE create DDL.sql”
echo-e“生成DDL…\n…表:$table\n…文件:$DDL\U文件”
配置单元-e“显示创建表$SCHEMA.$table”>“$DDL_文件”
完成
回声“完成”
用法:

$ ./gen-ddl <schema-name> <out-dir>
$。/gen ddl

我有一个问题:在哪里命名输出文件?在“DDL_文件”之后?我可以和您聊天吗?请参阅“DDL_文件”行=“$OUTDIR/$TABLE create DDL.sql”。文件名是附加了“-create DDL.sql”的表名。您可以根据需要进行修改。