设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

返回列表 发新帖
查看: 1896|回复: 8
打印 上一主题 下一主题

[其它] 利用shell查询数据库最新分区

[复制链接]
跳转到指定楼层
1#
发表于 2021-9-30 10:47:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
这是我目前负责的项目的一部分,感觉有点意思,就拿出来和大家分享一下。
  1. #!/bin/sh
  2. ## 导出最新分区到文件
  3. sql_file=./partitions_sql.txt
  4. partition_file=./partitions.csv
  5. rm -rf ${partition_file}
  6. IFS_old=$IFS
  7. IFS=\n'
  8. for line in `cat ${sql_file}`
  9. do
  10. hive -e "${line}" | sed 's/[\t]/,/g'  >> ${partition_file};
  11. echo 'done';
  12. done;
  13. IFS=$IFS_old
复制代码
简要说明下:
#!/bin/sh——声明shell的使用路径。然后定义sql文件路径和输出路径。接下来删除输出(旧)文件(如果存在旧文件,删除后方便后续追加数据)。
然后定义新的内部分隔符IFS(Internal Field Separator)为换行符(\n)。这是因为默认情况下,shell脚本是以空格换行的。
最后读取每一行是sql文件,然后运行hive数据库,把查询结果输出到文件,并恢复默认IFS。附上sql文件如下:


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

评分

参与人数 1经验 +15 收起 理由
zpy2 + 15 (V币)优秀原创教程、管理建议(1-5分)

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅

点击这里给我发消息

2#
发表于 2021-9-30 10:51:06 | 只看该作者
Linux ?
这是Linux shell 还是 windows powershell
3#
 楼主| 发表于 2021-9-30 10:54:09 | 只看该作者
tmtony 发表于 2021-9-30 10:51
Linux ?
这是Linux shell 还是 windows powershell

Linux shell。这段时间都在做ETL,顺带写点心得

点击这里给我发消息

4#
发表于 2021-9-30 11:35:04 | 只看该作者
厉害 !!
回复

使用道具 举报

点击这里给我发消息

5#
发表于 2021-9-30 19:07:45 来自手机 | 只看该作者
本帖最后由 zpy2 于 2021-9-30 19:09 编辑

#!/bin/bash不是 bash shell ?
6#
 楼主| 发表于 2021-10-1 08:50:55 | 只看该作者
zpy2 发表于 2021-9-30 19:07
#!/bin/bash不是 bash shell ?

这个“!”不是取反的意思。
在Linux的sh里不写这句也是可以运行的。当然,指定shell的路径会更好一些。

点击这里给我发消息

7#
发表于 2021-10-1 09:26:49 来自手机 | 只看该作者
搞hadoop大数据了,厉害。这个hive好用吗?
8#
 楼主| 发表于 2021-10-11 12:27:57 | 只看该作者
zpy2 发表于 2021-10-1 09:26
搞hadoop大数据了,厉害。这个hive好用吗?

具体看硬件,然后看优化程度。一般情况下,hive查询比其它数据库要慢,只是插入数据快。

点击这里给我发消息

9#
发表于 2021-10-12 21:13:30 来自手机 | 只看该作者
哦,这样啊。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-11-25 08:33 , Processed in 0.101728 second(s), 38 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表