當前位置:
首頁 >
1.2 批量生成MySQL建表语句
發布時間:2023/12/10
51
豆豆
生活随笔
收集整理的這篇文章主要介紹了
1.2 批量生成MySQL建表语句
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
MySQL數據庫服務器為Linux系統
數據庫用戶名:root
數據庫密碼:123456
數據庫庫名:test
一、 要求
將test庫所有表的建表SQL腳本生成到服務器“/opt/tables”目錄,CREATE之前加DROP TABLE IF EXISTS語句,若表存在則先刪表,一個表對應一個腳本,以表名命名對應文件。
二、 實現方法
創建一個shell腳本執行即可,腳本內容如下。
#!/bin/bash ### 數據庫連接,用戶名:root, 密碼:root dbcn='mysql -uroot -p123456'; #### 數據庫名 db=test; ### 獲取數據庫中表個數 ct=`$dbcn -N -e " SELECT COUNT(1) FROM information_schema.TABLES AS t WHERE t.TABLE_SCHEMA = '$db' AND t.TABLE_TYPE = 'BASE TABLE' ; "`; echo '數據庫表總數量:'$ct; ## shell 文件所在目錄 workdir=$(cd $(dirname $0); pwd);## 創建建表語句存放文件夾 sqldir=/opt/tables; mkdir -p $sqldir;# 遍歷數據庫中的所有表 ii=0; while [ $ii -lt $ct ]; do p=$ii; let ii++; echo '----------------第'$ii'張表------------------';## 獲取表名table_name=`$dbcn -N -e " SELECT t.TABLE_NAME FROM information_schema.TABLES AS t where t.TABLE_SCHEMA = '$db' AND t.TABLE_TYPE = 'BASE TABLE' limit $p,1;"`; echo '表名:'$table_name;## 獲取建表語句table_ddl=`$dbcn $db -N -e "SHOW CREATE TABLE $table_name ;"`;echo '建表語句:'${table_ddl#*${table_name}};## 根據表名,把建表語句放入指定文件中echo -e "DROP TABLE IF EXISTS ${table_name};" > $sqldir/${table_name}.sql; echo -e "${table_ddl#*${table_name}};" >> $sqldir/${table_name}.sql ; done echo '數據庫建表語句導出完畢!';三、其他要求實現
如表的字符集為utf8,排序規則為utf8_bin(字符比較時大小寫敏感),建表語句和字符串字段后會跟utf8和utf8_bin。
DROP TABLE IF EXISTS TEST_INST; CREATE TABLE `TEST_INST` (`INST_CODE` VARCHAR(32) COLLATE utf8_bin DEFAULT NULL COMMENT '機構代碼',`INST_ATTRIBUTE` VARCHAR(4) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL COMMENT '機構屬性',KEY `INDEX_TEST_INST_1` (`INST_CODE`) ) ENGINE=INNODB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;1、 需要把所有建表腳本字段后跟的utf8和utf8_bin去掉,只留表后的字符屬性,字段屬性跟隨表。
shell腳本如下(具體要替換哪些字符串根據實際情況修改)
2、 表后的字符排序屬性utf8_bin需要批量修改成utf8_general_ci
shell腳本如下
3、 表后的屬性去掉,跟隨數據庫的默認屬性。
shell腳本如下
總結
以上是生活随笔為你收集整理的1.2 批量生成MySQL建表语句的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: EMS问题
- 下一篇: mysql建表语句注释_MySQL建表语