beeline连接时设置输出格式,只显示表名
时间: 2024-01-13 20:02:50 浏览: 88
在 Beeline 中,你可以通过设置输出格式来只显示表名。具体来说,你可以使用 Beeline 的 `set` 命令来设置输出格式,例如:
```
set format csv2;
```
这将设置输出格式为 CSV 格式,此时执行 `show tables` 命令将只显示表名,不会显示表名四周的竖线和加号。
如果你需要在查询结果中同时显示表名和数据,可以使用 `set` 命令设置输出格式为 TSV 格式,并且在执行查询时使用 `describe formatted` 命令来显示表的详细信息。例如:
```
set format tsv;
show tables;
```
这将只显示表名,不会显示表名四周的竖线和加号。如果需要显示表的详细信息,可以使用:
```
describe formatted <table_name>;
```
这将显示表的详细信息,包括数据量等。
相关问题
beeline连接时设置输出格式
在连接 Beeline 时,你可以通过设置连接 URL 中的参数来设置输出格式。具体来说,你可以在连接 URL 后添加 `hive.resultset.use.unique.column.names=false` 参数来屏蔽表名四周的竖线。
例如,你可以使用如下的连接 URL:
```
jdbc:hive2://<hostname>:<port>/<database>;hive.resultset.use.unique.column.names=false
```
连接成功后,执行 `show tables` 命令将不会显示表名四周的竖线。
注意,该参数将影响所有的查询结果,因此如果你需要保留表名四周的竖线,可以在执行查询前将该参数设置为 `true`。
帮我写一个脚本,要求如下:1、beeline连接进入hive,设置输出格式为csv2。2、批量统计yinzhou库下表名开头为db_的表的数据量。3、并输出仅包含包名和数据量的txt
好的,以下是符合要求的脚本:
```bash
#!/bin/bash
# 连接 Hive 并设置输出格式为 CSV2
beeline -u jdbc:hive2://localhost:10000 -n username -p password << EOF > /dev/null
set hive.cli.print.header=false;
set hive.resultset.use.unique.column.names=false;
set hive.cli.print.row.to.vertical=false;
set hive.cli.print.current.db=false;
set hive.cli.print.header=true;
set csv2;
EOF
# 统计 yinzhou 库下表名以 db_ 开头的表的数据量
tables=$(beeline -u jdbc:hive2://localhost:10000 -n username -p password -e "show tables in yinzhou;" | grep "^db_" | tr '\n' ',' | sed 's/.$//')
for table in $(echo $tables | tr "," "\n")
do
data_size=$(beeline -u jdbc:hive2://localhost:10000 -n username -p password -e "select count(*) from yinzhou.\`$table\`" | awk '{if(NR>2)print}')
echo "$table,$data_size"
done > result.txt
```
这个脚本的具体实现如下:
1. 连接 Hive 并设置输出格式为 CSV2,这样输出的结果就是 CSV 格式,方便后续处理;
2. 使用 `show tables` 命令查询 yinzhou 库中的所有表名,并筛选出以 db_ 开头的表名,并保存到变量 `tables` 中;
3. 使用 for 循环依次查询每个表的数据量,并将包名和数据量以逗号分隔的形式输出到标准输出;
4. 将标准输出重定向到文件 result.txt 中,以便后续处理。
注意,在查询表数据量时,需要使用 `count(*)` 而不是 `count()`,这样可以避免出现统计错误的情况。另外,为了避免表名中包含特殊字符导致的语法错误,需要在表名前后加上反引号。
阅读全文