php - 从 Hive 表生成 DDL,并将每个 DDL 写入不同的 .txt 文件

标签 php python sql linux hive

我正在尝试学习如何为给定的 Hive 数据库中的所有表自动创建 DDL。

例如,我有一个名为 abc_db 的数据库。我写了一个Hive脚本,将所有的表写入一个名为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 写入单独文件的任何想法或起点?

最佳答案

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

脚本:gen-ddl

#!/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."

用法:

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

关于php - 从 Hive 表生成 DDL,并将每个 DDL 写入不同的 .txt 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56401676/

相关文章:

MySQL 内连接和多个 where 条件

MySQL 查询需要很长时间

SQL 计算仅包含 2 个特定值的两行之间的时间差

php - 如何在 Laravel 中通过请求 HTTP 发送多组数据输入?

php - 这个 SQL IF 语句有什么问题?

php - Ajax 发布在 asp 中失败

python - Python/Django 中具有拆分模型的循环模块依赖关系

php - 循环数据库查询

Python:手动输入运行shell脚本

python - Python 中的复杂数据提取