MySQL concat用法舉例


concat配合information_schema的應用

 

1    concat的一般用法主要是用於拼接

示例:

執行語句 SELECT CONCAT('M','y','S','Q','L') 可以達到如下效果

 

 2  在寫SQL備份語句時,假定要導出三張表分別為world下的

之前我們寫備份語句要寫三條 分別要導出這三張表;語句分別為

mysqldump -uroot -p123 world city >/tmp/world_city.sql
mysqldump -uroot -p123 world country >/tmp/world_country.sql
mysqldump -uroot -p123 world countrylanguage >/tmp/world_countrylanguage.sql
View Code

 

但是這是特定語句,如果該庫下有3000張表呢,30000張呢;為此這種導出方式不是最好的方式;為此我們可以將concat與information_schema聯系起來

SELECT CONCAT('mysqldump -uroot -p123 ',table_schema,' ',table_name,' >/tmp/',table_schema,'_',table_name,'.sql') FROM 
information_schema.tables WHERE table_schema='world';
View Code

請注意期中的一些細節:

' ' 引號中間有空格的話是表示空格,table_schema表示數據庫名

table_name表示表名;這些屬性在information_schema都可以找到

這是初始的寫法;執行效果如下

 

 

最后處理的方式:語句寫出來了,達到我們要的效果了;如果將來這個庫當中有其他表就會新增到concat的輸出語句

 

以上還不是最佳的效果

我們最好是將輸出的語句導出到指定文件

第一次執行會報錯;

處理方式如下:在/etc/my.cnf下新增語句 指定安全路徑

secure-file-priv=/tmp 並重啟數據庫后生效/etc/init.d/mysqld restart

 

 重新執行語句不再報錯

 

 

在終端查看效果如下:

 

該腳本可以直接用sh 執行 執行完就會備份這4個表了

 

新的示例1:創建world下所有表的備份表

USE world
-- 給world數據下每個表創建備份表
SHOW TABLES;

-- 原先寫法
CREATE TABLE nod_bak LIKE nod;
USE world
SHOW TABLES;
DROP TABLE nod_bak

-- 使用concat
SELECT CONCAT('create table ',table_name,'_bak like ',table_name,';') FROM information_schema.tables 
WHERE table_schema='world'
INTO OUTFILE '/tmp/world_bak.sql'
View Code

 

新的示例2 :刪除world下所有的bak后綴的表

SELECT CONCAT('drop table ',table_name,'_bak',';') FROM information_schema.`TABLES`
WHERE table_schema='world'
INTO OUTFILE '/tmp/del_bak.sql';
View Code

 

 

 

 

關於oracle 和concat有關的內容

https://www.cnblogs.com/nodchen/p/10036189.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM