Heim  >  Artikel  >  Backend-Entwicklung  >  Shell übernimmt das Hinzufügen, Löschen, Ändern und Abfragen von MySQL

Shell übernimmt das Hinzufügen, Löschen, Ändern und Abfragen von MySQL

WBOY
WBOYOriginal
2016-08-08 09:25:191357Durchsuche

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:
Shell übernimmt das Hinzufügen, Löschen, Ändern und Abfragen von MySQL

MySQL im Shell-Skript bedienen

Daten exportieren

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

Daten einfügen

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

Daten aktualisieren

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

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn