在 PostgreSQL 和 MySQL 中的所有表中查找特定数据
本篇文章向大家介绍《在 PostgreSQL 和 MySQL 中的所有表中查找特定数据》,主要包括,具有一定的参考价值,需要的朋友可以参考一下。

使用大型数据库时,您可能会发现自己需要在多个表和列中查找特定值。这可能是一项具有挑战性的任务,尤其是当您不知道到底该去哪里查看时。幸运的是,有一些方法可以在 postgresql 和 mysql 中自动执行此搜索。
在 postgresql 中搜索数据
postgresql 允许高级过程语言功能,这在此类场景中非常有用。下面,我们将创建一个 pl/pgsql 块,用于在 postgresql 数据库中的所有表和列中搜索特定值。
分步指南:
- 创建 pl/pgsql 块:
以下 pl/pgsql 块将在公共模式内所有类型为字符变化、文本或 uuid 的列中搜索值“dcea8891-b4e1-45f8-8cb9-c8a164cb98ff”。
do $$
declare
rec record;
search_text text := 'dcea8891-b4e1-45f8-8cb9-c8a164cb98ff';
query text;
begin
for rec in
select table_schema, table_name, column_name
from information_schema.columns
where table_schema = 'public' and data_type in ('character varying', 'text', 'uuid')
loop
query := 'select ''' || rec.table_schema || '.' || rec.table_name || '.' || rec.column_name || ''' as location, ' ||
rec.column_name || '
from ' || rec.table_schema || '.' || rec.table_name || '
where ' || rec.column_name || '::text = $1';
execute query using search_text into rec;
if rec is not null then
raise notice 'found in %', rec.location;
end if;
end loop;
end $$;
- 说明:
- 声明变量:我们声明变量来保存我们的搜索文本和动态查询。
- 循环列: 我们循环遍历公共模式中类型为字符变化、文本或 uuid 的每一列。
- 构造并执行查询: 对于每一列,我们构造一个动态 sql 查询来检查该列是否包含搜索文本。
- 发出通知: 如果找到搜索文本,则会发出带有该列位置的通知。
- 运行区块:
在 postgresql 查询工具(例如 pgadmin、psql)中执行上述块。这将打印出找到指定值的位置。
在 mysql 中搜索数据
mysql 不支持 pl/pgsql 风格的过程语言块。但是,您可以通过手动生成并运行必要的查询或使用 shell 脚本来实现类似的功能。
分步指南:
- 生成搜索查询:
以下 sql 查询将生成一个查询列表,用于在指定数据库中的所有类型为 varchar、text 或 char 的列中搜索值“dcea8891-b4e1-45f8-8cb9-c8a164cb98ff”。
select
concat('select ''', table_schema, '.', table_name, '.', column_name,
''' as location, ', column_name,
' from ', table_schema, '.', table_name,
' where ', column_name, ' = ''', 'dcea8891-b4e1-45f8-8cb9-c8a164cb98ff', ''';') as search_query
from
information_schema.columns
where
table_schema = 'your_database_name'
and data_type in ('varchar', 'text', 'char');
将 your_database_name 替换为您数据库的实际名称。
- 手动运行生成的查询:
复制上述查询的输出,它看起来像这样:
select 'your_database_name.table1.column1' as location, column1 from your_database_name.table1 where column1 = 'dcea8891-b4e1-45f8-8cb9-c8a164cb98ff'; select 'your_database_name.table2.column2' as location, column2 from your_database_name.table2 where column2 = 'dcea8891-b4e1-45f8-8cb9-c8a164cb98ff';
在 mysql 客户端中手动执行每个查询。
- 使用 shell 脚本实现自动化:
如果您有权访问类 unix shell,则可以使用 shell 脚本自动化该过程:
#!/bin/bash
SEARCH_TEXT='dcea8891-b4e1-45f8-8cb9-c8a164cb98ff'
DATABASE='your_database_name'
USERNAME='your_username'
PASSWORD='your_password'
# Generate the search queries
QUERIES=$(mysql -u $USERNAME -p$PASSWORD -D $DATABASE -N -e "
SELECT CONCAT('SELECT ''', table_schema, '.', table_name, '.', column_name,
''' AS location, ', column_name,
' FROM ', table_schema, '.', table_name,
' WHERE ', column_name, ' = ''', '$SEARCH_TEXT', ''';')
FROM information_schema.columns
WHERE table_schema = '$DATABASE' AND data_type IN ('varchar', 'text', 'char');")
# Execute each query
while read -r QUERY; do
mysql -u $USERNAME -p$PASSWORD -D $DATABASE -e "$QUERY"
done <<< "$QUERIES"
将 your_username、your_password 和 your_database_name 替换为您的实际 mysql 用户名、密码和数据库名称。该脚本将生成必要的搜索查询,然后执行每个查询并打印结果。
结论
无论您使用 postgresql 还是 mysql,您都可以通过利用 postgresql 中的过程语言块或在 mysql 中生成和执行动态查询,在数据库中的所有表和列中高效搜索特定值。这些方法可以在管理大型数据集时为您节省大量时间和精力。
对于 postgresql,pl/pgsql 块为自动搜索提供了强大的解决方案。对于 mysql,虽然过程语言块不可用,但手动或通过 shell 脚本生成和运行动态查询可以达到相同的结果。
通过利用这些技术,您可以简化数据库管理任务并快速找到所需的数据。
好了,本文到此结束,带大家了解了《在 PostgreSQL 和 MySQL 中的所有表中查找特定数据》,希望本文对你有所帮助!关注golang学习网公众号,给大家分享更多数据库知识!
XGBoost:梯度提升的超能力
- 上一篇
- XGBoost:梯度提升的超能力
- 下一篇
- 使用 Angular 和 Tailwind CSS 构建 URL 缩短应用程序
-
- 数据库 · MySQL | 12小时前 |
- MySQL建库建表详细操作步骤
- 486浏览 收藏
-
- 数据库 · MySQL | 16小时前 |
- 视图的优缺点分析:MySQL视图利与弊
- 294浏览 收藏
-
- 数据库 · MySQL | 3天前 |
- MySQL数值函数大全及使用技巧
- 117浏览 收藏
-
- 数据库 · MySQL | 5天前 |
- 三种登录MySQL方法详解
- 411浏览 收藏
-
- 数据库 · MySQL | 5天前 |
- MySQL数据备份方法与工具推荐
- 420浏览 收藏
-
- 数据库 · MySQL | 5天前 |
- MySQL数据备份方法与工具推荐
- 264浏览 收藏
-
- 数据库 · MySQL | 6天前 |
- MySQL索引的作用是什么?
- 266浏览 收藏
-
- 数据库 · MySQL | 1星期前 |
- MySQL排序原理与实战应用
- 392浏览 收藏
-
- 数据库 · MySQL | 1星期前 |
- MySQLwhere条件查询技巧
- 333浏览 收藏
-
- 数据库 · MySQL | 1星期前 |
- MySQL常用数据类型有哪些?怎么选更合适?
- 234浏览 收藏
-
- 数据库 · MySQL | 1星期前 |
- MySQL常用命令大全管理员必学30条
- 448浏览 收藏
-
- 数据库 · MySQL | 1星期前 |
- MySQL高效批量插入数据方法大全
- 416浏览 收藏
-
- 前端进阶之JavaScript设计模式
- 设计模式是开发人员在软件开发过程中面临一般问题时的解决方案,代表了最佳的实践。本课程的主打内容包括JS常见设计模式以及具体应用场景,打造一站式知识长龙服务,适合有JS基础的同学学习。
- 543次学习
-
- GO语言核心编程课程
- 本课程采用真实案例,全面具体可落地,从理论到实践,一步一步将GO核心编程技术、编程思想、底层实现融会贯通,使学习者贴近时代脉搏,做IT互联网时代的弄潮儿。
- 516次学习
-
- 简单聊聊mysql8与网络通信
- 如有问题加微信:Le-studyg;在课程中,我们将首先介绍MySQL8的新特性,包括性能优化、安全增强、新数据类型等,帮助学生快速熟悉MySQL8的最新功能。接着,我们将深入解析MySQL的网络通信机制,包括协议、连接管理、数据传输等,让
- 500次学习
-
- JavaScript正则表达式基础与实战
- 在任何一门编程语言中,正则表达式,都是一项重要的知识,它提供了高效的字符串匹配与捕获机制,可以极大的简化程序设计。
- 487次学习
-
- 从零制作响应式网站—Grid布局
- 本系列教程将展示从零制作一个假想的网络科技公司官网,分为导航,轮播,关于我们,成功案例,服务流程,团队介绍,数据部分,公司动态,底部信息等内容区块。网站整体采用CSSGrid布局,支持响应式,有流畅过渡和展现动画。
- 485次学习
-
- ChatExcel酷表
- ChatExcel酷表是由北京大学团队打造的Excel聊天机器人,用自然语言操控表格,简化数据处理,告别繁琐操作,提升工作效率!适用于学生、上班族及政府人员。
- 3194次使用
-
- Any绘本
- 探索Any绘本(anypicturebook.com/zh),一款开源免费的AI绘本创作工具,基于Google Gemini与Flux AI模型,让您轻松创作个性化绘本。适用于家庭、教育、创作等多种场景,零门槛,高自由度,技术透明,本地可控。
- 3407次使用
-
- 可赞AI
- 可赞AI,AI驱动的办公可视化智能工具,助您轻松实现文本与可视化元素高效转化。无论是智能文档生成、多格式文本解析,还是一键生成专业图表、脑图、知识卡片,可赞AI都能让信息处理更清晰高效。覆盖数据汇报、会议纪要、内容营销等全场景,大幅提升办公效率,降低专业门槛,是您提升工作效率的得力助手。
- 3437次使用
-
- 星月写作
- 星月写作是国内首款聚焦中文网络小说创作的AI辅助工具,解决网文作者从构思到变现的全流程痛点。AI扫榜、专属模板、全链路适配,助力新人快速上手,资深作者效率倍增。
- 4545次使用
-
- MagicLight
- MagicLight.ai是全球首款叙事驱动型AI动画视频创作平台,专注于解决从故事想法到完整动画的全流程痛点。它通过自研AI模型,保障角色、风格、场景高度一致性,让零动画经验者也能高效产出专业级叙事内容。广泛适用于独立创作者、动画工作室、教育机构及企业营销,助您轻松实现创意落地与商业化。
- 3815次使用
-
- MySQL主从切换的超详细步骤
- 2023-01-01 501浏览
-
- Mysql-普通索引的 change buffer
- 2023-01-25 501浏览
-
- MySQL高级进阶sql语句总结大全
- 2022-12-31 501浏览
-
- Mysql报错:message from server: * is blocked because of many
- 2023-02-24 501浏览
-
- 腾讯云大佬亲码“redis深度笔记”,不讲一句废话,全是精华
- 2023-02-22 501浏览

