天天看點

mysql下通過shell腳本插入資料

一、建立資料庫及表

建立資料庫

1

<code>create database dic character set utf8;</code>

建表

2

3

4

5

6

7

8

9

10

11

<code>CREATE TABLE `dic` (</code>

<code>  </code><code>`id` int(22) unsigned NOT NULL AUTO_INCREMENT COMMENT 'id',</code>

<code>  </code><code>`principal` varchar(213) CHARACTER SET utf8 NOT NULL COMMENT '負責人',</code>

<code>  </code><code>`use` varchar(222) CHARACTER SET utf8 NOT NULL COMMENT '用途',</code>

<code>  </code><code>`type` varchar(222) CHARACTER SET utf8 NOT NULL COMMENT '機器類型',</code>

<code>  </code><code>`model` varchar(222) CHARACTER SET utf8 NOT NULL COMMENT '機器型号',</code>

<code>  </code><code>`place` varchar(222) CHARACTER SET utf8 NOT NULL COMMENT '位置',</code>

<code>  </code><code>`IP` varchar(222) CHARACTER SET utf8 NOT NULL COMMENT 'IP',</code>

<code>  </code><code>`addtime` datetime NOT NULL COMMENT '時間',</code>

<code>  </code><code>PRIMARY KEY (`id`)</code>

<code>) ENGINE=InnoDB AUTO_INCREMENT=23 DEFAULT CHARSET=utf8;</code>

二、編寫相關腳本

注意事項

mysql -u使用者名 -p密碼 -e "指令;"  多指令都寫在雙引号裡面,通過分号分割。

INSERT INTO `表名` (`字段`,`字段`) VALUES (值,值);

以下兩個腳本都可以實作

<code>#!/bin/bash</code>

<code>read -p </code><code>"please enter you mysql password:"</code> <code>passwd</code>

<code>TABLE=</code><code>"dic"</code>

<code>query=</code><code>"NULL,'張偉易','新dns伺服器1','實體機','DELL R410','14層A5','10.240.210.61','2015-06-06 13:04:09'"</code>

<code>echo</code> <code>$query</code>

<code>/usr/bin/mysql dic -u root -p</code><code>$passwd</code> <code>&lt;&lt;EOF</code>

<code>INSERT INTO </code><code>$TABLE</code> <code>VALUE(</code><code>$query</code><code>);</code>

<code>#EOF</code>

<code>read -p "please enter you mysql password:" passwd</code>

<code>TABLE="dic"</code>

<code>query="NULL,'張偉易','新dns伺服器1','實體機','DELL R410','14層A5','10.240.210.61','2015-06-06 13:04:09'"</code>

<code>echo $query</code>

<code>/usr/bin/mysql dic -u root -p$passwd -e "INSERT INTO $TABLE VALUE($query);"</code>

<a href="http://s3.51cto.com/wyfs02/M01/6E/0A/wKioL1VykizyyFU1AAMBmkc9fpI850.jpg" target="_blank"></a>

此外,還可以通過将普通文本格式化輸出後導入到資料庫中

這裡以test1作為示例

<code>[root@daohang lxh]# cat test1</code>

<code>小明    新伺服器1    實體機    DELL R410    14層A5    10.240.210.61</code>

腳本如下

12

13

14

15

16

17

18

19

20

21

<code>&gt;test_new</code>

<code>MYSQL=/usr/bin/mysql</code>

<code>TIME=`date +%F\ %T`</code>

<code>P="\e[01;35m"</code>

<code>#sed "s/\(^.*$\)/\1,$TIME/" test &gt;&gt; test_new##在每行行尾添加時間</code>

<code>cat test1 | sed 's/^/NULL\t/g' |sed 's/\t/,/g' |sed "s/\(^.*$\)/\1,$TIME/" &gt;&gt;test_new</code>

<code>cat test_new |while read line</code>

<code>#echo "$TIME" &gt;&gt;mysql_err_log</code>

<code>do</code>

<code>echo $line</code>

<code>query=`echo "$line" |awk -F ","  '{ printf("%s,\"%s\",\"%s\",\"%s\",\"%s\",\"%s\",\"%s\",\"%s\"", $1, $2, $3, $4, $5, $6, $7 , $8)}'`</code>

<code>echo $query 1&gt;&gt;mysql_err_log 2&gt;&amp;1</code>

<code>$MYSQL dic -u root -p$passwd  &lt;&lt;EOF</code>

<code>INSERT INTO $TABLE VALUES($query);</code>

<code>EOF</code>

<code>done</code>

<code>#echo -e " $P***********************$TIME**********************************" &gt;&gt;mysql_err_log</code>

執行腳本

<code>[root@daohang lxh]# sh mysqltest.sh</code>

<code>NULL,小明,新伺服器1,實體機,DELL R410,14層A5,10.240.210.61,2015-06-06 14:26:07</code>

<code>NULL,"小明","新伺服器1","實體機","DELL R410","14層A5","10.240.210.61","2015-06-06 14:26:07"</code>

插入成功

<a href="http://s3.51cto.com/wyfs02/M00/6E/0B/wKioL1VynFizALA3AAPIAsLuMl0934.jpg" target="_blank"></a>

本文轉自 xoyabc 51CTO部落格,原文連結:http://blog.51cto.com/xoyabc/1659178,如需轉載請自行聯系原作者