Heim > Artikel > Backend-Entwicklung > Shell übernimmt das Hinzufügen, Löschen, Ändern und Abfragen von MySQL
Einführung
Ich habe in diesen Tagen eine Aufgabe erledigt, um die Daten in zwei Datentabellen zu vergleichen. Da einige Maschinen jedoch kein PHP haben oder PHP die MySQL-Erweiterung nicht kompiliert, kann ich sie nicht verwenden Für die MySQL-Serie wird das Skript ungültig sein. Heute werde ich eine Shell-Version schreiben, damit es auf allen Maschinen der Linux-Serie ausgeführt werden kann.
Wie betreibt Shell MySQL?
Der Shell-Vorgang von MySQL besteht eigentlich darin, Anweisungen über Parameter über den MySQL-Befehl auszuführen. Schauen Sie sich die folgenden Parameter an:
<code>-e, --execute=name Execute command and quit. (Disables --force and history file.)</code>
Damit wir die Anweisung über mysql -e ausführen können, wie folgt:
<code>mysql -hlocalhost -P3306 -uroot -p123456 $test --default-character-set=utf8 -e "select * from users"</code>
Nach der Ausführung werden folgende Ergebnisse zurückgegeben:
MySQL im Shell-Skript bedienen
<code>MYSQL="mysql -h192.168.1.102 -uroot -p123456 --default-character-set=utf8 -A -N" #这里面有两个参数,-A、-N,-A的含义是不去预读全部数据表信息,这样可以解决在数据表很多的时候卡死的问题 #-N,很简单,Don't write column names in results,获取的数据信息省去列名称 sql="select * from test.user" result="$($MYSQL -e "$sql")" dump_data=./data.user.txt >$dump_data echo -e "$result" > $dump_data #这里要额外注意,echo -e "$result" > $dump_data的时候一定要加上双引号,不让导出的数据会挤在一行 #下面是返回的测试数据 3 吴彦祖 32 5 王力宏 32 6 ab 32 7 黄晓明 33 8 anonymous 32</code>
<code>#先看看要导入的数据格式,三列,分别是id,名字,年龄(数据是随便捏造的),放入data.user.txt 12 tf 23 13 米勒 24 14 西安电子科技大学 90 15 西安交大 90 16 北京大学 90 #OLF_IFS=$IFS #IFS="," #临时设置默认分隔符为逗号 cat data.user.txt | while read id name age do sql="insert into test.user(id, name, age) values(${id}, '${name}', ${age});" $MYSQL -e "$sql" done</code>
Ergebnisse ausgeben
<code>+----+--------------------------+-----+ | id | name | age | +----+--------------------------+-----+ | 12 | tf | 23 | | 13 | 米勒 | 24 | | 14 | 西安电子科技大学 | 90 | | 15 | 西安交大 | 90 | | 16 | 北京大学 | 90 | +----+--------------------------+-----+</code>
<code>#先看看更新数据的格式,将左边一列替换为右边一列,只有左边一列的删除,下面数据放入update.user.txt tf twoFile 西安电子科技大学 西军电 西安交大 西安交通大学 北京大学 cat update.user.txt | while read src dst do if [ ! -z "${src}" -a ! -z "${dst}" ] then sql="update test.user set name='${dst}' where name='${src}'" fi if [ ! -z "${src}" -a -z "${dst}" ] then sql="delete from test.user where name='${src}'" fi $MYSQL -e "$sql" done</code>
Ausgabeergebnis:
<code>+----+--------------------------+-----+ | id | name | age | +----+--------------------------+-----+ | 12 | twoFile | 23 | | 13 | 米勒 | 24 | | 14 | 西军电 | 90 | | 15 | 西安交通大学 | 90 | +----+--------------------------+-----+</code>
Das Urheberrecht dieses Artikels liegt beim Autor iforever [
]. Nach dem Nachdruck des Artikels ist der Autor und das Original verboten Der Textlink muss an einer gut sichtbaren Stelle auf der Artikelseite angegeben werden.
Das Obige stellt die Shell-Verarbeitung des Hinzufügens, Löschens, Änderns und Abfragens von MySQL vor, einschließlich Aspekten des Inhalts. Ich hoffe, es wird für Freunde hilfreich sein, die sich für PHP-Tutorials interessieren.