Heim >System-Tutorial >LINUX >(Tägliche Frage) Lösungsideen für die Batch-Ausführung der MySQL-Datenbank

(Tägliche Frage) Lösungsideen für die Batch-Ausführung der MySQL-Datenbank

WBOY
WBOYnach vorne
2024-03-02 09:31:18651Durchsuche

1. Übersicht

Anwendungsszenario: Viele MySQL-Dateien müssen stapelweise ausgeführt werden. Das Ausführen der SQL-Dateien der MySQL-Datenbank einzeln ist zu zeitaufwändig.

Debugging-Umgebung: Lokales Windows 10, die auszuführende Datenbank befindet sich auf dem Centos-Server im LAN.

Mysql muss lokal installiert werden. Meine Version ist mysql5.7.

MYSQL-Download:

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

Nach dem Herunterladen und Installieren der Linux-Umgebungsvariablen kann nach dem Hinzufügen des Pfads zu den Umgebungsvariablen der zuvor verwendete MySQL-Befehl verwendet werden.

1. Überprüfen Sie, ob die Windows-Befehlszeile den MySQL-Befehl unterstützt

Verwenden Sie die Befehlszeile, um sich in cmd bei MySQL anzumelden. Wenn die Meldung „Kein interner oder externer Befehl“ angezeigt wird, müssen Sie ihn konfigurieren

image.png

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

Sie müssen das bin-Verzeichnis unter dem MySQL-Installationsverzeichnis zu den Systemvariablen hinzufügen. Bitte erfahren Sie, wie Sie Baidu bedienen.

Nachdem die Konfiguration abgeschlossen ist, öffnen Sie cmd erneut und verwenden Sie direkt die MySQL-Befehlszeile.

2. Lösungsideen 3. Konkrete Umsetzung

1. Durchsuchen Sie das Verzeichnis und generieren Sie eine neue Batch-Ausführungs-SQL-Datei „batch.sql“

Erstellen Sie einen neuen SQLScripts-Ordner im Stammverzeichnis und laden Sie alle auszuführenden Skripte in den SQLScripts-Ordner. Die Stapelverarbeitungsbefehle werden nacheinander durchlaufen und dem neuen SQL hinzugefügt.

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

2. Erstellen Sie eine neue createsql.bat

Erstellen Sie eine neue TXT-Datei im Stammverzeichnis, benennen Sie sie in „creatsql.bat“ um und kopieren Sie dann den folgenden Inhalt hinein. Dieser Batch-Prozess wird nacheinander durchlaufen und zu „batch.sql“ hinzugefügt.

@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

Hinweis: Da ich während des Tests auf Kodierungsprobleme gestoßen bin, wurden alle Batchdateien mit Notepad++ bearbeitet und das Kodierungsformat auf ANSI statt auf utf-8 geändert;

3. Erstellen Sie eine neue update.bat

Erstellen Sie eine neue TXT-Datei im Stammverzeichnis, benennen Sie sie um in: update.bat und kopieren Sie dann den folgenden Inhalt hinein. Dieser Batch-Prozess stellt eine Verbindung zur Datenbank her und führt die neu generierte Datei „batch.sql“ aus.

::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

Hinweis: Sie müssen die Variablenwerte in diesem Batch-Linux-Batch-Ausführungsskript ändern, z. B. Host, Datenbankname/Passwort und andere Informationen.

4. Stapelverarbeitung ausführen

Führen Sie „createsql.bat“ aus und prüfen Sie, ob „batch.sql“ ordnungsgemäß ausgeführt wird.

刚才介绍的思路是分为两步,先遍历并整合成一个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编码格式。

结束

Das obige ist der detaillierte Inhalt von(Tägliche Frage) Lösungsideen für die Batch-Ausführung der MySQL-Datenbank. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:itcool.net. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen