我的编程空间,编程开发者的网络收藏夹
学习永远不晚

在 PostgreSQL 和 MySQL 中的所有表中查找特定数据

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

在 PostgreSQL 和 MySQL 中的所有表中查找特定数据

使用大型数据库时,您可能会发现自己需要在多个表和列中查找特定值。这可能是一项具有挑战性的任务,尤其是当您不知道到底该去哪里查看时。幸运的是,有一些方法可以在 postgresql 和 mysql 中自动执行此搜索。

在 postgresql 中搜索数据

postgresql 允许高级过程语言功能,这在此类场景中非常有用。下面,我们将创建一个 pl/pgsql 块,用于在 postgresql 数据库中的所有表和列中搜索特定值。

分步指南:

  1. 创建 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 $$;
  1. 说明:
  • 声明变量:我们声明变量来保存我们的搜索文本和动态查询。
  • 循环列: 我们循环遍历公共模式中类型为字符变化、文本或 uuid 的每一列。
  • 构造并执行查询: 对于每一列,我们构造一个动态 sql 查询来检查该列是否包含搜索文本。
  • 发出通知: 如果找到搜索文本,则会发出带有该列位置的通知。
  1. 运行区块:

在 postgresql 查询工具(例如 pgadmin、psql)中执行上述块。这将打印出找到指定值的位置。

在 mysql 中搜索数据

mysql 不支持 pl/pgsql 风格的过程语言块。但是,您可以通过手动生成并运行必要的查询或使用 shell 脚本来实现类似的功能。

分步指南:

  1. 生成搜索查询:

以下 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 替换为您数据库的实际名称。

  1. 手动运行生成的查询:

复制上述查询的输出,它看起来像这样:

   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 客户端中手动执行每个查询。

  1. 使用 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 



<p>将 your_username、your_password 和 your_database_name 替换为您的实际 mysql 用户名、密码和数据库名称。该脚本将生成必要的搜索查询,然后执行每个查询并打印结果。</p>

<h3>
  
  
  结论
</h3>

<p>无论您使用 postgresql 还是 mysql,您都可以通过利用 postgresql 中的过程语言块或在 mysql 中生成和执行动态查询,在数据库中的所有表和列中高效搜索特定值。这些方法可以在管理大型数据集时为您节省大量时间和精力。</p>

<p>对于 postgresql,pl/pgsql 块为自动搜索提供了强大的解决方案。对于 mysql,虽然过程语言块不可用,但手动或通过 shell 脚本生成和运行动态查询可以达到相同的结果。</p>

<p>通过利用这些技术,您可以简化数据库管理任务并快速找到所需的数据。</p>


          

            
        

以上就是在 PostgreSQL 和 MySQL 中的所有表中查找特定数据的详细内容,更多请关注编程网其它相关文章!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

在 PostgreSQL 和 MySQL 中的所有表中查找特定数据

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

在 PostgreSQL 和 MySQL 中的所有表中查找特定数据

使用大型数据库时,您可能会发现自己需要在多个表和列中查找特定值。这可能是一项具有挑战性的任务,尤其是当您不知道到底该去哪里查看时。幸运的是,有一些方法可以在 postgresql 和 mysql 中自动执行此搜索。在 postgresql
在 PostgreSQL 和 MySQL 中的所有表中查找特定数据
2024-07-26

如何在MySQL中查找包含两个特定列的所有表?

要查找两个特定的列名称,请使用 information_schema.columns 在这里,我使用 Id 代替 columnA,使用 Name 代替 columnB -mysql> select table_name as TableNa
2023-10-22

怎么查看PostgreSQL数据库中所有表

本文小编为大家详细介绍“怎么查看PostgreSQL数据库中所有表”,内容详细,步骤清晰,细节处理妥当,希望这篇“怎么查看PostgreSQL数据库中所有表”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。查看Pos
2023-07-05

如何查看PostgreSQL数据库中所有表

目录查看PostgreSQL数据库中所有表PostgreSQL数据库表空间,索引,表大小查询Postgresql 数据库总结查看PostgreSQL数据库中所有表作为曾经干过运维的我来说,或许对大部分运维人员来说,不能依靠管理工具来操作数
2023-03-01

mysql之查找所有数据库中没有主键的表问题

目录查找所有数据库中没有主键的表修改mysql数据表主键总结查找所有数据库中没有主键的表select table_schema,table_name from information_schema.tables where (table
2023-03-23

mysql如何查询表中所有数据

要查询MySQL表中的所有数据,可以使用SELECT语句。以下是查询表中所有数据的示例:```SELECT * FROM 表名;```其中,“*”表示查询所有列,“表名”表示要查询的表的名称。执行以上语句后,MySQL将返回该表中的所有数据
2023-09-26

mysql中如何查看数据库中所有表

要查看 mysql 数据库中的所有表,可以使用 show tables; 命令,该命令将显示所有表的列表,包括表名称、类型和行数(如果启用了 information_schema)。如何在 MySQL 中查看数据库中所有表要查看 MySQ
mysql中如何查看数据库中所有表
2024-05-01

mysql怎么查询数据库中所有表

要查询数据库中所有表,可以使用以下SQL语句:SHOW TABLES;这条SQL语句会列出数据库中所有的表名。如果想要查看更详细的信息,可以使用以下SQL语句:SHOW TABLE STATUS;这条SQL语句会列出数据库中所有表的详细
mysql怎么查询数据库中所有表
2024-04-09

mysql查找所有数据库中没有主键的表问题怎么解决

今天小编给大家分享一下mysql查找所有数据库中没有主键的表问题怎么解决的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。查找所
2023-07-05

mysql如何查询一个表中的所有数据

要查询一个表中的所有数据,可以使用以下SQL语句:SELECT * FROM table_name;其中,table_name 是要查询的表的名称。这条SQL语句会返回表中的所有数据。如果要指定查询特定的列,可以将* 替换为列名,多个列名
mysql如何查询一个表中的所有数据
2024-04-20

如何检查特定MySQL数据库中表的表状态?

我们可以借助 show table status 语句来检查数据库中表的状态。例如,在名为tutorial的数据库中,通过执行此语句我们可以获取表的状态如下 -mysql> show table status \G*************
2023-10-22

如何检查特定 MySQL 数据库中表的大小?

正如我们已经检查了MySQL数据库的大小一样,我们也可以检查特定数据库中表的大小。可以按如下方式完成 -mysql> SELECT-> table_name AS "Table",-> round(((data_length + index
2023-10-22

jQuery中选择查找自定义属性具有特定值的所有元素

同样在HTML5可以通过data-自定义属性名来给元素添加自定义的属性名。一旦添加完成之后。通过JS可以获取以及设置自定义属性。这篇文章主要介绍了jQuery中选择查找自定义属性具有特定值的所有元素
2023-02-25

sql中查询表中特定重复数据的函数

sql 查询表中特定重复数据的函数包括:count 函数:计算重复值的数量。group by 子句:分组数据并计算每个组中的值。having 子句:筛选聚合查询的结果。SQL 中查询表中特定重复数据的函数COUNT 函数COUNT 函数
sql中查询表中特定重复数据的函数
2024-04-28

怎么查看mysql中所有的数据库

查看 mysql 中所有数据库的步骤:1. 连接到服务器并输入密码;2. 执行查询 show databases;;3. 查看查询返回的数据库列表。如何查看 MySQL 中所有的数据库?查看 MySQL 中所有数据库的步骤非常简单:连接
怎么查看mysql中所有的数据库
2024-05-30

sql怎么查询数据库中所有的表

查询数据库中所有表的命令因 dbms 而异,以下是三种常见 dbms 的命令:mysql:show tables;postgresql:select * from pg_catalog.pg_tables;sqlite:select nam
sql怎么查询数据库中所有的表
2024-06-03

编程热搜

目录