VIM系列-2-你的系统总共有多少张表?

本文介绍如何使用Vim编辑器的列操作功能,快速将数据库查询结果转换为SQL IN子句所需的格式,提高工作效率。通过具体步骤演示,包括使用Visual Block模式和替换命令,实现对大量数据的高效处理。

小伙伴们下午好!

看起来查多少张表跟vim有啥关系?因为查表是目的,核心技术用到了vim,用到了【查找替换】和visual block编辑模式。

一、SQL

想知道你系统有多少张表?eg:我们系统是mysql数据库,思路是什么呢?


show databases; #所有库
select database();选中的是哪个库?
use 某一个库;
show tables; #当前库有多少表?

一个一个count下,如果有10个以上的库,会比较痛苦,效率低下;如果想要精确的数字,只统计大库自然不符合要求。

核心是:information_schema库。

这个库有个TABLES表,里面包含了库和表的关系。那么很简单了:


SELECT 
COUNT(0)  tableCount
FROM 
information_schema.tables
WHERE
table_schema in ();

那么in () 表示所有的库名,如何快速格式化为mysql的in()的格式?
请继续往下看

二、用到vim的地方(核心:vim列操作)

当然实现上面目标可以有很多灵活办法,我这里用vim举例,大家完全可以不拘泥于此。也可以用excel函数,也可以用xargs命令。

  • 拿到所有库 show databases;
  • 复制粘贴到一个txt文档中,vim进行编辑
  • vim如何实现快速格式化?(’’,’’,’’)这种效果?
1:块模式选中所有行,直接编辑'即可。

行首插入内容:

11G   确保在首行
2、Ctrl + v  进入Visual Block选择模式
330G 选中所有行(你有多少行,可以set nu看一下)
4、Shift + i   输入'(英文状态)
5、ESC  及全部输入

行尾插入内容:

因为每行长短不一,那么怎么做呢?块模式选中行尾巴好像不好选择,所以:


1:%s/$/', 

这一步操作就可以把行位都变成我们想要的。

最后手动调整下首行、末行的()即可。



看下效果图:
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

三、优化

行首的替换也可以直接用替换符,操作更加简单。
块的方式编辑所有行首简单,因为行首都对齐着,但是编辑行尾就不好操作,行的长度不一致,用替换自然灵活。

:%s/^/'

四、总结

  • show database;自然要剔除默认库;(mysql 2个schema sys)

当然统计分析要看每个库有多少表呢?group by 一下可以了,看下我的最终sql :


show databases;

SELECT
 COUNT(0) as tableCount,
 table_schema as db
FROM
information_schema.tables
WHERE
table_schema
IN
('ag',
'analytic_scheduler',
'cat',
'cr_debug',
'csc_scheduler',
'dist',
'idp',
'im',
'jin',
'logs',
'medbrain',
'monitor',
'ok',
'oozie',
'piwik',
'rtc',
'scm',
'superset',
'tob')
GROUP BY 
table_schema;


小技能要活学活用,平时思考多,用起来顺手。平时功夫不到家,用的时候捉襟见肘,效率低还没提升。

2.hive的安装 # 上传解压安装包 cd /export/server/ tar zxvf apache-hive-3.1.2-bin.tar.gz mv apache-hive-3.1.2-bin hive #解决 hadoop、hive 之间 guava 版本差异 cd /export/server/hive rm -rf lib/guava-19.0.jar cp /export/server/hadoop-3.1.4/share/hadoop/common/lib/guava-27.0-jre.jar ./lib/ #添加 mysql jdbc 驱动到 hive 安装包 lib/文件下 mysql-connector-java-5.1.32.jar #修改 hive 环境变量文件 添加 Hadoop_HOME cd /export/server/hive/conf/ mv hive-env.sh.template hive-env.sh vim hive-env.sh export HADOOP_HOME=/export/server/hadoop export HIVE_CONF_DIR=/export/server/hive/conf export HIVE_AUX_JARS_PATH=/export/server/hive/lib #新增 hive-site.xml 配置 mysql 等相关信息 vim hive-site.xml #初始化 metadata cd /export/server/hive bin/schematool -initSchema -dbType mysql -verbos #初始化成功会在 mysql 中创建 74 3. hive-site.xml 配置 mysql 等相关信息 <configuration> <!-- 存储元数据 mysql 相关配置 --> <property> <name>javax.jdo.option.ConnectionURL</name> <value> jdbc:mysql://Master:3306/hive?createDatabaseIfNotExist=true&useSSL=false&useUnicode=true&characterEncoding=UTF-8</value> </property> <property> <name>javax.jdo.option.ConnectionDriverName</name> <value>com.mysql.jdbc.Driver</value> </property> <property> <name>javax.jdo.option.ConnectionUserName</name> <value>root</value> </property> <property> <name>javax.jdo.option.ConnectionPassword</name> <value>123456</value> </property> <!-- H2S 运行绑定 host --> <property> <name>hive.server2.thrift.bind.host</name> <value>Master</value> </property> <!-- 远程模式部署 metastore 服务地址 --> <property> <name>hive.metastore.uris</name> <value>thrift://Master:9083</value> </property> <!-- 关闭元数据存储授权 --> <property> <name>hive.metastore.event.db.notification.api.auth</name> <value>false</value> </property> <!-- 关闭元数据存储版本的验证 --> <property> <name>hive.metastore.schema.verification</name> <value>false</value> </property> </configuration> 4.初始化 metadata cd /export/server/hive bin/schematool -initSchema -dbType mysql -verbos 若格式化失败 Hive 重新格式化 1. 删除用户目录:首先,需要删除用户目录中的所有内容。hdfs dfs -rm -r /user/ 2. 删除 Hive 数据库:接下来,删除 Hive 格式化过程中创建的 Hive 数据库。 mysql> drop database hive; 3. 重新格式化:最后,使用 schematool 命令重新初始化 Hive 的元数据。 5.远程模式 Metastore 服务手动启动 前台启动 关闭 ctrl+c /export/server/hive/bin/hive --service metastore #后台启动 进程挂起 关闭使用 jps + kill #输入命令回车执行 再次回车 进程将挂起后台 nohup /export/server/hive/bin/hive --service metastore & #前台启动开启 debug 日志 /export/server/hive/bin/hive --service metastore --hiveconf hive.root.logger=DEBUG,console 6.Hive Client 使用 /export/server/hive/bin/hive 7.其他机器上通过 bin/hive 访问 hive metastore 服务 如果需要在其他机器上通过 bin/hive 访问 hive metastore 服务,只需要在 该机器的 hive-site.xml 配置中添加 metastore 服务地址即可。 #前提步骤 将hive安装包发送各节点,并配置环境变量 scp -r /export/server/hive slave1:/export/server scp -r /export/server/hive slave2:/export/server #将环境变量发送到slave1、slave2,去对应节点source /etc/profile scp -r /etc/profile slave2:/etc scp -r /etc/profile slave3:/etc 修改salve1和slave2的配置文件 <configuration> <property> <name>hive.metastore.uris</name> <value>thrift://Master:9083</value> </property> </configuration> 测试是否能够访问 cd …/ /export/server/hive/bin/hive show databases我在完成Linux中的 请帮我根据文档要求完成操作,以下是我的虚拟机信息. 虚拟机版本:CentOS7 用户名为:root 虚拟机master IP为192.168.128.130 hive路径: /export/server/apache-hive-3.1.2-bin.tar.gz mysql路径:/export/server/mysql-5.7.43-linux-glibc2.12-x86_64/ 当前所在路径:/export/server 所有操作均在root下完成 请给我最详细的操作步骤,我要现成的代码,包括配置文件路径vi /........等等,务必详细,谢谢
11-01
我在完成Linux中的hive的安装与配置 请帮我根据文档要求完成操作,以下是我的虚拟机信息. 虚拟机版本:CentOS7 用户名为:root 虚拟机master IP为192.168.128.130 hive路径: /export/server/apache-hive-4.0.0-bin.tar.gz mysql路径: /export/server/mysql-5.7.43-linux-glibc2.12-x86_64.tar.gz 目前我在master虚拟机,当前所在路径:/root 所有操作均在root下完成请给我最详细的操作步骤,我要现成的代码,包括配置文件路径vi /........等等,务必详细,谢谢 一、设置内嵌Derby模式 # 上传解压安装包 cd /export/server/ tar zxvf apache-hive-3.1.2-bin.tar.gz mv apache-hive-3.1.2-bin hive #解决 hadoop、hive 之间 guava 版本差异 cd /export/server/hive rm -rf lib/guava-19.0.jar cp /export/server/hadoop-3.1.4/share/hadoop/common/lib/guava-27.0-jre.jar ./lib/ #修改 hive 环境变量文件 添加 Hadoop_HOME cd /export/server/hive/conf/ mv hive-env.sh.template hive-env.sh vim hive-env.sh export HADOOP_HOME=/export/server/hadoop export HIVE_CONF_DIR=/export/server/hive/conf export HIVE_AUX_JARS_PATH=/export/server/hive/lib #初始化 metadata cd /export/server/hive bin/schematool -dbType derby -initSchema #启动 hive 服务 bin/hive 二、设置直连数据库模式 略 三、设置远程服务器模式 1.安装MySQL 2.hive的安装 # 上传解压安装包 cd /export/server/ tar zxvf apache-hive-3.1.2-bin.tar.gz mv apache-hive-3.1.2-bin hive #解决 hadoop、hive 之间 guava 版本差异 cd /export/server/hive rm -rf lib/guava-19.0.jar cp /export/server/hadoop-3.1.4/share/hadoop/common/lib/guava-27.0-jre.jar ./lib/ #添加 mysql jdbc 驱动到 hive 安装包 lib/文件下 mysql-connector-java-5.1.32.jar #修改 hive 环境变量文件 添加 Hadoop_HOME cd /export/server/hive/conf/ mv hive-env.sh.template hive-env.sh vim hive-env.sh export HADOOP_HOME=/export/server/hadoop export HIVE_CONF_DIR=/export/server/hive/conf export HIVE_AUX_JARS_PATH=/export/server/hive/lib #新增 hive-site.xml 配置 mysql 等相关信息 vim hive-site.xml #初始化 metadata cd /export/server/hive bin/schematool -initSchema -dbType mysql -verbos #初始化成功会在 mysql 中创建 74 3. hive-site.xml 配置 mysql 等相关信息 <configuration> <!-- 存储元数据 mysql 相关配置 --> <property> <name>javax.jdo.option.ConnectionURL</name> <value> jdbc:mysql://Master:3306/hive?createDatabaseIfNotExist=true&useSSL=false&useUnicode=true&characterEncoding=UTF-8</value> </property> <property> <name>javax.jdo.option.ConnectionDriverName</name> <value>com.mysql.jdbc.Driver</value> </property> <property> <name>javax.jdo.option.ConnectionUserName</name> <value>root</value> </property> <property> <name>javax.jdo.option.ConnectionPassword</name> <value>123456</value> </property> <!-- H2S 运行绑定 host --> <property> <name>hive.server2.thrift.bind.host</name> <value>Master</value> </property> <!-- 远程模式部署 metastore 服务地址 --> <property> <name>hive.metastore.uris</name> <value>thrift://Master:9083</value> </property> <!-- 关闭元数据存储授权 --> <property> <name>hive.metastore.event.db.notification.api.auth</name> <value>false</value> </property> <!-- 关闭元数据存储版本的验证 --> <property> <name>hive.metastore.schema.verification</name> <value>false</value> </property> </configuration> 4.初始化 metadata cd /export/server/hive bin/schematool -initSchema -dbType mysql -verbos 若格式化失败 Hive 重新格式化 1. 删除用户目录:首先,需要删除用户目录中的所有内容。hdfs dfs -rm -r /user/ 2. 删除 Hive 数据库:接下来,删除 Hive 格式化过程中创建的 Hive 数据库。 mysql> drop database hive; 3. 重新格式化:最后,使用 schematool 命令重新初始化 Hive 的元数据。 5.远程模式 Metastore 服务手动启动 前台启动 关闭 ctrl+c /export/server/hive/bin/hive --service metastore #后台启动 进程挂起 关闭使用 jps + kill #输入命令回车执行 再次回车 进程将挂起后台 nohup /export/server/hive/bin/hive --service metastore & #前台启动开启 debug 日志 /export/server/hive/bin/hive --service metastore --hiveconf hive.root.logger=DEBUG,console 6.Hive Client 使用 /export/server/hive/bin/hive 7.其他机器上通过 bin/hive 访问 hive metastore 服务 如果需要在其他机器上通过 bin/hive 访问 hive metastore 服务,只需要在 该机器的 hive-site.xml 配置中添加 metastore 服务地址即可。 #前提步骤 将hive安装包发送各节点,并配置环境变量 scp -r /export/server/hive slave1:/export/server scp -r /export/server/hive slave2:/export/server #将环境变量发送到slave1、slave2,去对应节点source /etc/profile scp -r /etc/profile slave2:/etc scp -r /etc/profile slave3:/etc 修改salve1和slave2的配置文件 <configuration> <property> <name>hive.metastore.uris</name> <value>thrift://Master:9083</value> </property> </configuration> 测试是否能够访问 cd …/ /export/server/hive/bin/hive show databases
最新发布
11-05
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值