iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >mysql误修改全表记录怎么办
  • 371
分享到

mysql误修改全表记录怎么办

2024-04-02 19:04:59 371人浏览 安东尼
摘要

这篇文章给大家分享的是有关Mysql误修改全表记录怎么办的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。 #添加数据 insert into testdb1.student(i

这篇文章给大家分享的是有关Mysql误修改全表记录怎么办的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

#添加数据

insert into testdb1.student(id,name,class,score) value(a,'a',1,45),(2,'b',1,46),(3,'c',2,89),(4,'d',2,90),(5,'e',3,67),(6,'f',3,87),(7,'g',4,77),(8,'h',4,91);

mysql> select * from testdb1.student;

+------+------+-------+-------+

| id   | name | class | score |

+------+------+-------+-------+

|    1 | a    | 1     |    45 |

|    2 | b    | 1     |    46 |

|    3 | c    | 2     |    89 |

|    4 | d    | 2     |    90 |

|    5 | e    | 3     |    67 |

|    6 | f    | 3     |    87 |

|    7 | g    | 4     |    77 |

|    8 | h    | 4     |    91 |

+------+------+-------+-------+

8 rows in set (0.00 sec)

#修改数据

update student set score=100;

commit;

mysql> select * from testdb1.student;

+------+------+-------+-------+

| id   | name | class | score |

+------+------+-------+-------+

|    1 | a    | 1     |   100 |

|    2 | b    | 1     |   100 |

|    3 | c    | 2     |   100 |

|    4 | d    | 2     |   100 |

|    5 | e    | 3     |   100 |

|    6 | f    | 3     |   100 |

|    7 | g    | 4     |   100 |

|    8 | h    | 4     |   100 |

+------+------+-------+-------+

8 rows in set (0.00 sec)

mysql> set global read_only=1

mysql> show master status\G

*************************** 1. row ***************************

             File: ray-bin.000004

         Position: 1992

     Binlog_Do_DB:

Binlog_Ignore_DB:

Executed_Gtid_Set:

1 row in set (0.00 sec)

# at 2192是在binlog日志中查到的 

[root@localhost ~]# mysqlbinlog /data/3306/logs/ray-bin.000004 -v -v -S /data/3306/soket/mysql.sock --base64-output=decode-rows | grep -A 15 student | sed -n '/# at 2192/,/COMMIT/p'| sed -n 's\### \\p' | sed "s/\/\*.*\*\///g" | sed 's/`//g'> /tmp/1.txt

[root@localhost ~]# cat /tmp/1.txt

UPDATE testdb1.student

WHERE

  @1=1

  @2='a'

  @3='1'

  @4=45

SET

  @1=1

  @2='a'

  @3='1'

  @4=100

UPDATE testdb1.student

WHERE

  @1=2

  @2='b'

  @3='1'

  @4=46

SET

  @1=2

  @2='b'

  @3='1'

  @4=100

UPDATE testdb1.student

WHERE

  @1=3

  @2='c'

  @3='2'

  @4=89

SET

  @1=3

  @2='c'

  @3='2'

  @4=100

UPDATE testdb1.student

WHERE

  @1=4

  @2='d'

  @3='2'

  @4=90

SET

  @1=4

  @2='d'

  @3='2'

  @4=100

UPDATE testdb1.student

WHERE

  @1=5

  @2='e'

  @3='3'

  @4=67

SET

  @1=5

  @2='e'

  @3='3'

  @4=100

UPDATE testdb1.student

WHERE

  @1=6

  @2='f'

  @3='3'

  @4=87

SET

  @1=6

  @2='f'

  @3='3'

  @4=100

UPDATE testdb1.student

WHERE

  @1=7

  @2='g'

  @3='4'

  @4=77

SET

  @1=7

  @2='g'

  @3='4'

  @4=100

UPDATE testdb1.student

WHERE

  @1=8

  @2='h'

  @3='4'

  @4=91

SET

  @1=8

  @2='h'

  @3='4'

  @4=100

[root@localhost ~]# cat column.txt

id

name

class

score

[root@localhost ~]# cat getSQL.sh

#!/bin/bash

# by ray


iswhere=1   #判断循环的行的位置,1表示在where后,0表示不再where后

colNum=0    #计算列数,一般在binlog日志内第一列为@1,第二列为@2一次类推

whereNum=0  #判断where后面字段出现的次数,便于拼接字符串,第一次出现不适用都会,第二次以后使用逗号拼接

setNum=0 #判断set后面字段出现的次数,便于拼接字符串,第一次出现不适用都会,第二次以后使用逗号拼接


replaceColumn(){   #把@开头的列替换为列配置文件内的列,安配置文件的顺序执行

     cat $1 | while read line

     do

          colNum=$[${colNum}+1]

          sed -i "s/@${colNum}/${line}/g" ./execSQL.sql  #替换列

     done

}


getSQL(){   #获取sql

     sql1=''

     sql_result=''

     sql_condition=''

     while read line #读取处理过的binlog日志

     do

          if [[ ${line} =~ 'UPDATE' ]];then     #匹配是否update

               if [ "${sql1}" != "" ];then

                    echo ${sql1}' '${sql_result}' '${sql_condition}';' >> ./execSQL.sql  #打印sql

                    sql1=''

                    sql_result=''

                    sql_condition=''

                    whereNum=0

                    setNum=0

               fi

             sql1=${line}        #拼接sql字符串,获取update

        elif [[ ${line} =~ 'WHERE' ]];then

             sql_condition=${line}   #拼接字符串,把binlog日志内where后面内容

             iswhere=1               #判断是否为where,因为要把where和set后面的内容互换

        elif [[ ${line} =~ 'SET' ]];then

             sql_result=' SET '${sql_result} #拼接字符串

             iswhere=0

        elif [[ ${iswhere} -eq 1 ]];then            #1为where后面,把binlog日志where后面的内容拼接到sql的set后

             if [[ ${whereNum} -eq 0 ]];then              #判断where字符串后的字符串是否一次出现

                  sql_result=${sql_result}' '${line}

                  whereNum=1                    #设置为1,表示不是第一次出现

             elif [[ ${whereNum} -eq 1 ]];then

                  sql_result=${sql_result}', '${line}

             fi

        elif [[ ${iswhere} -eq 0 ]];then           #判断是否为set后面的字符串

             if [[ ${setNum} -eq 0 ]];then               #判断set字符串后的字符串是否一次出现

                  sql_condition=${sql_condition}' '${line}

                  setNum=1                     #设置为1,表示不是第一次出现

             elif [[ ${setNum} -eq 1 ]];then

                  sql_condition=${sql_condition}' and '${line}

             fi

        fi

     done < $1   #把文件用while循环读取每一行

     echo ${sql1}' '${sql_result}' '${sql_condition}';' >> ./execSQL.sql    #最后一行退出循环,所以要打印最后一行

     echo "commit;" >> ./execSQL.sql

     replaceColumn $2

}



#脚本的入口,调用函数获取内容

if [ -e $1 ];then  #判断第一个参数是否为文件

     getSQL $1 $2

else

    echo $1' is not a file!!'

fi

[root@localhost ~]# bash getSQL.sh '/tmp/1.txt' "./column.txt"

mysql> select * from testdb1.student;

+------+------+-------+-------+

| id   | name | class | score |

+------+------+-------+-------+

|    1 | a    | 1     |   100 |

|    2 | b    | 1     |   100 |

|    3 | c    | 2     |   100 |

|    4 | d    | 2     |   100 |

|    5 | e    | 3     |   100 |

|    6 | f    | 3     |   100 |

|    7 | g    | 4     |   100 |

|    8 | h    | 4     |   100 |

+------+------+-------+-------+

8 rows in set (0.00 sec)

[root@localhost ~]# mysql -uroot -p123456 -S /data/3306/soket/mysql.sock < /root/execSQL.sql

mysql: [Warning] Using a passWord on the command line interface can be insecure.

mysql> select * from testdb1.student;

+------+------+-------+-------+

| id   | name | class | score |

+------+------+-------+-------+

|    1 | a    | 1     |    45 |

|    2 | b    | 1     |    46 |

|    3 | c    | 2     |    89 |

|    4 | d    | 2     |    90 |

|    5 | e    | 3     |    67 |

|    6 | f    | 3     |    87 |

|    7 | g    | 4     |    77 |

|    8 | h    | 4     |    91 |

+------+------+-------+-------+

8 rows in set (0.00 sec)

感谢各位的阅读!关于“mysql误修改全表记录怎么办”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

您可能感兴趣的文档:

--结束END--

本文标题: mysql误修改全表记录怎么办

本文链接: https://www.lsjlt.com/news/62673.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

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

下载Word文档
猜你喜欢
  • mysql误修改全表记录怎么办
    这篇文章给大家分享的是有关mysql误修改全表记录怎么办的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。 #添加数据 insert into testdb1.student(i...
    99+
    2024-04-02
  • 怎么修改sql表中的记录
    要修改 SQL 表中的记录,可以使用 UPDATE 语句。以下是一些示例: 修改表中一条记录的特定字段值: UPDATE 表名 ...
    99+
    2024-03-14
    sql
  • 怎么使用PHP修改MySQL记录
    这篇文章主要介绍了怎么使用PHP修改MySQL记录的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇怎么使用PHP修改MySQL记录文章都会有所收获,下面我们一起来看看吧。连接MySQL数据库PHP提供了一些内置的...
    99+
    2023-07-06
  • mysql中怎么修改和删除数据记录
    mysql中怎么修改和删除数据记录,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。  mysql怎么修改删除数据记录  用update...
    99+
    2024-04-02
  • Visual C#数据表怎么删除和修改记录
    这篇文章主要讲解了“Visual C#数据表怎么删除和修改记录”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Visual C#数据表怎么删除和修改记录”吧!Visual C#数据表操作:用V...
    99+
    2023-06-18
  • 怎么记录PHP修改日志
    这篇“怎么记录PHP修改日志”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“怎么记录PHP修改日志”文章吧。选择修改日志格式在...
    99+
    2023-07-06
  • 怎么看mysql锁表记录
    查看mysql锁表记录的方法:可直接在mysql命令行执行命令查看,命令如:“show engine innodb status\G;”解决锁表的方法:查询进程,输入命令:“show processlist”查询到相对应的进程,然后输入ki...
    99+
    2024-04-02
  • MySQL怎么查询表记录
    这篇文章主要介绍“MySQL怎么查询表记录”,在日常操作中,相信很多人在MySQL怎么查询表记录问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”MySQL怎么查询表记录”的疑惑...
    99+
    2024-04-02
  • mysql怎么修改表名
    非常抱歉,由于您没有提供文章标题,我无法为您生成一篇高质量的文章。请您提供文章标题,我将尽快为您生成一篇优质的文章。...
    99+
    2024-05-16
  • MySQL忘记登录密码怎么办
    本篇内容主要讲解“MySQL忘记登录密码怎么办”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“MySQL忘记登录密码怎么办”吧!接手一个项目时,如果上一位负责人没...
    99+
    2024-04-02
  • 怎么修改mysql表字段
    小编给大家分享一下怎么修改mysql表字段,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!先创建一个数据库,以及若干个表(一个表也...
    99+
    2024-04-02
  • mysql怎么修改表前缀
    mysql修改表前缀的示例:打开命令行窗口,输入命令:“mysql -u root -p”再输入密码,进入mysql。输入命令“alter table old_post rename to new_post;”即可将old_post表名前缀...
    99+
    2024-04-02
  • 怎么修改mysql注册表
    修改mysql注册表的方法首先,使用组合键“win+R”运行“regedit”,打开注册表;进入到注册表后,在注册表中以下打开以下MySQL文件:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Ser...
    99+
    2024-04-02
  • mysql怎么修改表的engine
    mysql中修改表engine的方法方法一:首先,在命令行中启动MySQL服务;sudo service mysql startMySQL服务启动后,输入用户名和密码登录MySQL;mysql -u&...
    99+
    2024-04-02
  • mysql怎么修改表编码
    在mysql中修改表编码的方法:1.启动mysql;2.登录mysql数据库;3.进入数据表;4.查看表编码;5.执行命令修改表的编码;具体步骤如下:首先,在命令行中启动mysql服务;service mysql sta...
    99+
    2024-04-02
  • mysql怎么修改表结构
    在mysql中修改表结构的方法:1.启动mysql;2.登录mysql数据库;3.进入数据表;4.执行命令修改表结构;具体步骤如下:首先,在命令行中启动mysql服务;service mysql start mysql服...
    99+
    2024-04-02
  • mysql怎么修改表注释
    本篇内容介绍了“mysql怎么修改表注释”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成! ...
    99+
    2024-04-02
  • oracle数据修改记录怎么查看
    要查看Oracle数据库的数据修改记录,可以使用以下方法之一:1. 使用Oracle Flashback技术:- 可以使用FLASH...
    99+
    2023-10-20
    oracle
  • MySQL中slow_log表无法修改成innodb引擎怎么办
    小编给大家分享一下MySQL中slow_log表无法修改成innodb引擎怎么办,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!背...
    99+
    2024-04-02
  • mysql密码忘记了怎么修改
    这篇文章主要讲解了“mysql密码忘记了怎么修改”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“mysql密码忘记了怎么修改”吧!初始密码为空,使用空密码登陆...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作