Rumah  >  Artikel  >  Tutorial sistem  >  (Soalan harian) Idea penyelesaian untuk pelaksanaan kumpulan pangkalan data mysql

(Soalan harian) Idea penyelesaian untuk pelaksanaan kumpulan pangkalan data mysql

WBOY
WBOYke hadapan
2024-03-02 09:31:18619semak imbas

1. Gambaran keseluruhan

Senario aplikasi: Banyak fail mysql perlu dilaksanakan secara berkelompok Melaksanakan fail sql pangkalan data mysql satu demi satu adalah terlalu memakan masa.

Persekitaran penyahpepijatan: tetingkap tempatan 10, pangkalan data yang akan dilaksanakan adalah pada pelayan centos dalam LAN.

Mysql perlu dipasang secara tempatan. Versi saya ialah mysql5.7.

Muat turun MYSQL:

linux 批量执行脚本_linux批量执行的脚本_批量操作linux

Selepas memuat turun dan memasang pembolehubah persekitaran Linux, selepas menambah laluan kepada pembolehubah persekitaran, arahan mysql yang digunakan sebelum ini boleh digunakan.

1. Semak sama ada baris arahan windows menyokong arahan mysql

Gunakan baris arahan untuk log masuk ke mysql dalam cmd Jika ia menggesa "bukan perintah dalaman atau luaran", anda perlu mengkonfigurasinya

imej.png

批量操作linux_linux 批量执行脚本_linux批量执行的脚本

Anda perlu menambah direktori bin di bawah direktori pemasangan mysql kepada pembolehubah sistem. Sila ketahui cara mengendalikan Baidu.

Selepas konfigurasi selesai, buka semula cmd dan gunakan baris arahan mysql secara langsung.

2. Idea penyelesaian 3. Perlaksanaan khusus

1 Lintas direktori dan jana fail sql pelaksanaan kelompok baharu batch.sql

.

Buat folder sqlscripts baharu dalam direktori akar, dan muatkan semua skrip untuk dilaksanakan ke dalam folder sqlscripts Arahan pemprosesan kelompok akan dilalui dan ditambahkan pada sql baharu dalam urutan.

linux 批量执行脚本_linux批量执行的脚本_批量操作linux

2 Cipta createsql.bat baharu

Buat fail txt baharu dalam direktori akar dan namakan semula kepada:creatsql.bat, dan kemudian salin kandungan berikut ke dalamnya Proses kelompok ini akan dilalui dan ditambah ke batch.sql dalam urutan.

@echo off & setlocal EnableDelayedExpansion
del batch.sql
echo 开始执行...
@set source=.
for %%i in (sqlscripts*.sql) do (
  set file=%%~fi
  set file=!file:/=/!
  echo %source% !file!
  echo %source% !file! >> batch.sql
)
echo 执行完毕!
pause

Nota: Saya menghadapi masalah pengekodan semasa ujian, jadi semua fail kelompok telah diedit dengan notepad++ dan format pengekodan ditukar kepada ANSI dan bukannya utf-8;

3. Cipta kemas kini baharu.bat

Buat fail txt baharu dalam direktori akar dan namakannya semula kepada: update.bat, dan kemudian salin kandungan berikut ke dalamnya. Proses kelompok ini akan menyambung ke pangkalan data dan melaksanakan fail batch.sql yang baru dijana.

::echo off
@echo off
:: 指定MySQL安装路径
:: C:
:: cd C:Program FilesMySQLMySQL Server 5.7bin
:: 数据库主机
@set host=192.10.120.101
:: 数据库名称
@set db=test
:: 用户名
@set userName=root
:: 密码
@set password=123456
:: 获取文件夹所在绝对路径
@set basePath=%~dp0
:: 要执行的sql脚本
@set sqlpath=%basePath%batch.sql
echo 开始执行数据库脚本...
:: 连接MySQL数据库并执行sql脚本 -f 脚本执行过程中,出现错误继续执行 --default-character-set指定导入数据的编码(与数据库编码相同)
mysql -f -h %host% -u %userName% --password=%password% %db% < %sqlpath% --default-character-set=gbk
:: 执行完成后,不立刻关闭dos窗口
echo 所有脚本执行完毕。
del batch.sql
pause

Nota: Anda perlu menukar nilai pembolehubah ​​​​dalam kelompok ini skrip pelaksanaan kelompok linux, seperti hos, nama/kata laluan pangkalan data dan maklumat lain.

4. Laksanakan pemprosesan kelompok

Laksanakan createsql.bat, dan semak sama ada batch.sql dilaksanakan dengan betul untuk melihat sama ada ia dilaksanakan seperti biasa IV

刚才介绍的思路是分为两步,先遍历并整合成一个sql脚本去执行。似乎还有一种方法就是逐字遍历的时侯linux 批量执行脚本,每取出一条就去执行一条。这样写一个批处理就可以搞定了。

具体实现:

新建update_each.bat,内容如下

::echo off
@echo off
:: 指定MySQL安装路径
:: C:
:: cd C:Program FilesMySQLMySQL Server 5.7bin
:: 数据库主机
@set host=192.10.120.101
:: 数据库名称
@set db=test
:: 用户名
@set userName=root
:: 密码
@set password=123456
:: 获取文件夹所在绝对路径
@set basePath=%~dp0
:: 要执行的sql脚本
@set sqlpath=%basePath%all.sql
echo 开始执行数据库脚本...
for %%i in (sqlscripts*.sql) do (
echo 正在执行 %%i 请稍后...
echo set names utf8;>all.sql
echo source %%i>>all.sql
:: 连接MySQL数据库并执行sql脚本 -f 脚本执行过程中,出现错误继续执行 --default-character-set指定导入数据的编码(与数据库编码相同)
mysql -f -h %host% -u %userName% --password=%password% %db% < %sqlpath% --default-character-set=gbk
echo %%i 执行完毕。
)
del all.sql
echo 所有脚本执行完毕。
pause

非常提示编码问题suse linux 下载,批处理命令是ANSI编码格式;sql脚本是UTF-8编码格式。

结束

Atas ialah kandungan terperinci (Soalan harian) Idea penyelesaian untuk pelaksanaan kumpulan pangkalan data mysql. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:itcool.net. Jika ada pelanggaran, sila hubungi admin@php.cn Padam