欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

MySQL全局遍歷替換特征字符串的實現(xiàn)方法

 更新時間:2023年03月24日 10:29:45   作者:wzy0623  
本文主要介紹了MySQL全局遍歷替換特征字符串的實現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

需求:將一個MySQL實例(如10.10.10.1:3306)范圍內(nèi)所有字段數(shù)據(jù)中的 .letssing.net 替換為 .kaixinvv.com。

實現(xiàn):

1. 確定替換規(guī)則

replace .letssing.net/ -> .kaixinvv.com/  where column like (%http://%.letssing.net/% or %https://%.letssing.net/%)

2. 找出實例中所有符合特征的庫表字段

(1)生成查詢SQL語句

$cat find_db_table_column.sh
mysql -uroot -p123456 -h10.10.10.1 -P3306 -e "
select concat('select ','''',t1.TABLE_SCHEMA, '''',', ','''',t1.TABLE_NAME, '''',', ', '''',t1.COLUMN_NAME,'''',' 
                 from ', t1.TABLE_SCHEMA,'.',t1.TABLE_NAME,' where \`',t1.COLUMN_NAME,'\` like \'%://%.letssing.net/%\' limit 1;') 
  from information_schema.columns t1, information_schema.tables t2 
 where t1.DATA_TYPE in ('varchar','longtext','text','mediumtext','char') 
   and t1.TABLE_SCHEMA not in ('information_schema','mysql','performance_schema','sys') 
   and (t2.data_length+t2.index_length)/1024/1024/1024 < 1 
   and t2.table_name not like '%log%' and t2.table_name not like '%idempotent%' 
   and t1.table_schema= t2.table_schema 
   and t1.table_name= t2.table_name 
 order by t1.TABLE_SCHEMA, t1.TABLE_name, t1.column_name;" -N > query.sql

說明: 

  • mysql命令行執(zhí)行查詢,將查詢結(jié)果輸出到文件,-N參數(shù)用于去掉表頭。
  • 通過查詢數(shù)據(jù)字典視圖 information_schema.columns 和 information_schema.tables 生成查詢所有包含特征字符串的庫表字段的SQL語句。查詢條件為:只查詢字符串類型的字段;不查詢系統(tǒng)庫表;只查詢1G以下的小表;不查詢某些特殊用途(日志、冪等性)的超大表。

(2)執(zhí)行查詢并生成結(jié)果文件

mysql -uroot -p123456 -h10.10.10.1 -P3306 -N < query.sql > result.txt

result.txt文件內(nèi)容示例:
db1    table1    column1
db1    table1    column2
db2    table2    column1
db2    table2    column2

3. 對上一步每個庫表字段,查詢n條特征數(shù)據(jù),用以人工采樣確認(rèn)

(1)導(dǎo)入庫表字段數(shù)據(jù)

mysql -uwxy -p -h127.0.0.1 -p123456 -P3306 --local-infile -Ddomain -e "
truncate table t1;
load data local infile '/home/mysql/domain_name/rule/result.txt' into table t1(dbname,tablename,columnname);"

說明:將前一步生成的結(jié)果文件導(dǎo)入一個表中,用于下一步生成查詢SQL語句。

(2)生成查詢數(shù)據(jù)的SQL語句

mysql -uwxy -p -h127.0.0.1 -p123456 -P3306 -Ddomain -e "
select concat('select ',instance,',''',dbname,''',''',tablename,''',\`',columnname,'\` from ',dbname,'.',tablename, ' where \`',columnname,'\` like \'%://%.letssing.net/%\' limit 5;') from t1 order by instance,dbname,tablename;" -N > query_domain.sql

說明:這里對于每個符合條件的庫表字段,查詢出5條數(shù)據(jù)用于人工確認(rèn)。

(3)執(zhí)行查詢并生成結(jié)果文件

mysql -uroot -p123456 -h10.10.10.1 -P3306 < query_domain.sql > result_domain.txt

result_domain.txt文件內(nèi)容示例:
db1    table1    column1
db1    table1    http://txcdn-song-mvbox-cn.letssing.net/mka/16/90461116-0.mka
db1    table1    http://txcdn-song-mvbox-cn.letssing.net/mka/16/90461116-0.mka
db1    table1    column2
db1    table1    http://txcdn-song-mvbox-cn.letssing.net/ksc/90/16/90461116-0.ksc
db1    table1    http://txcdn-song-mvbox-cn.letssing.net/ksc/90/16/90461116-0.ksc
db2    table2    column1
db2    table2    http://txcdn-song-mvbox-cn.letssing.net/mka/16/90461116-0.mka
db2    table2    http://txcdn-song-mvbox-cn.letssing.net/mka/16/90461116-0.mka
db2    table2    column2
db2    table2    http://txcdn-song-mvbox-cn.letssing.net/ksc/90/16/90461116-0.ksc
db2    table1    http://txcdn-song-mvbox-cn.letssing.net/ksc/90/16/90461116-0.ksc

4. 更新特征域名數(shù)據(jù)

(1)生成字符串替換的更新SQL語句

mysql -uwxy -p -h127.0.0.1 -p123456 -P3306 --local-infile -Ddomain -e "
select concat('update ',dbname,'.',tablename,' set \`',columnname,'\` = ','replace(\`',columnname,'\`,','\'.letssing.net/\',\'.kaixinvv.com/\')',
' where \`',columnname,'\` like \'%http://%.letssing.net/%\' or \`', columnname,'\` like \'%https://%.letssing.net/%\';')
  from t1 where instance = 1 order by instance,dbname,tablename;" -N > update.sql

(2)執(zhí)行更新

mysql -uroot -p123456 -h10.10.10.1 -P3306 < update.sql

到此這篇關(guān)于MySQL全局遍歷替換特征字符串的實現(xiàn)方法的文章就介紹到這了,更多相關(guān)MySQL全局遍歷替換特征字符串內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Mysql表數(shù)據(jù)比較大情況下修改添加字段的方法實例

    Mysql表數(shù)據(jù)比較大情況下修改添加字段的方法實例

    最近遇到的一個問題,需要在一張1800萬數(shù)據(jù)量的表中添加加一個字段,所以這篇文章主要給大家介紹了關(guān)于Mysql表數(shù)據(jù)比較大情況下修改添加字段的方法,需要的朋友可以參考下
    2022-06-06
  • 教你解決往mysql數(shù)據(jù)庫中存入漢字報錯的方法

    教你解決往mysql數(shù)據(jù)庫中存入漢字報錯的方法

    這篇文章主要介紹了Mysql基礎(chǔ)之教你解決往數(shù)據(jù)庫中存入漢字報錯的方法,文中有非常詳細(xì)的代碼示例,對正在學(xué)習(xí)mysql的小伙伴們有非常好的幫助,需要的朋友可以參考下
    2021-05-05
  • Mysql CONVERT函數(shù)的具體使用

    Mysql CONVERT函數(shù)的具體使用

    本文主要介紹了Mysql CONVERT函數(shù)的具體使用,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-08-08
  • mysql 記錄不存在時插入 記錄存在則更新的實現(xiàn)方法

    mysql 記錄不存在時插入 記錄存在則更新的實現(xiàn)方法

    相信很多人都需要用到這個語句,請看下文:(在4.1以后的版本才有效)
    2008-08-08
  • Mysql中關(guān)于Incorrect string value的解決方案

    Mysql中關(guān)于Incorrect string value的解決方案

    在對mysql數(shù)據(jù)庫中插入數(shù)據(jù)的時候,直接插入中文是沒有問題的!但是用預(yù)編譯語句時,用流對數(shù)據(jù)進(jìn)行處理總報incorrect string value這個異常。本篇文章教給你解決方法
    2021-09-09
  • 如何合理使用數(shù)據(jù)庫冗余字段的方法

    如何合理使用數(shù)據(jù)庫冗余字段的方法

    今天小編就為大家分享一篇關(guān)于如何合理使用數(shù)據(jù)庫冗余字段的方法,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-03-03
  • SQLyog的下載、安裝、破解、配置教程(MySQL可視化工具安裝)

    SQLyog的下載、安裝、破解、配置教程(MySQL可視化工具安裝)

    SQLyog是一款MySQL可視化工具,他可以將部分SQL操作通過圖形化界面操作來完成,方便開發(fā)者更好的進(jìn)行開發(fā)及數(shù)據(jù)庫設(shè)計,這篇文章主要介紹了SQLyog的下載、安裝、破解、配置(MySQL可視化工具安裝),需要的朋友可以參考下
    2022-09-09
  • MySql開發(fā)之自動同步表結(jié)構(gòu)

    MySql開發(fā)之自動同步表結(jié)構(gòu)

    這篇文章主要給大家介紹了關(guān)于MySql開發(fā)之自動同步表結(jié)構(gòu)的相關(guān)資料,這樣可以避免在開發(fā)中由于修改數(shù)據(jù)庫字段導(dǎo)致的數(shù)據(jù)庫表不一致問題,需要的朋友可以參考下
    2021-05-05
  • 將MySQL數(shù)據(jù)導(dǎo)出為sql文件的最佳實踐

    將MySQL數(shù)據(jù)導(dǎo)出為sql文件的最佳實踐

    這篇文章主要給大家介紹了如何將MySQL數(shù)據(jù)導(dǎo)出為sql文件,避免數(shù)據(jù)丟失的最佳實踐,文中有詳細(xì)的導(dǎo)出流程步驟,跟著文中的步驟就可以導(dǎo)出文件,需要的朋友可以借鑒參考
    2023-07-07
  • 詳解MySQL數(shù)據(jù)備份之mysqldump使用方法

    詳解MySQL數(shù)據(jù)備份之mysqldump使用方法

    本篇文章主要介紹了MySQL數(shù)據(jù)備份,詳細(xì)的介紹了mysqldump的各種用法,具有一定的參考價值,有需要的可以了解一下。
    2016-11-11

最新評論