易陆发现互联网技术论坛

 找回密码
 开始注册
查看: 4820|回复: 3
收起左侧

shell脚本连接、读写、操作mysql数据库

[复制链接]
发表于 2017-1-13 09:32:06 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?开始注册

x
本文介绍了如何在shell中读写mysql数据库。主要介绍了如何在shell 中连接mysql数据库,如何在shell中创建数据库,创建表,插入csv文件,读取mysql数据库,导出mysql数据库为xml或html文件, 并分析了核心语句。本文介绍的方法适用于PostgreSQL ,相对mysql而言,shell 中读写PostgreSQL会更简单些。
1. 连接mysql 数据库
shell中连接数据库的方法很简单,只需要指定用户名,密码,连接的数据库名称,然后通过重定向,输入mysql的语句,如下所示:
0 k2 Z0 e) V8 B- e
[url=]复制代码[/url]代码如下:
# U* Q; N  y( X1 wmysql -u USERNAME -p PASSWORD DATABASENAME <<EOF 2>/dev/null$ k  @2 p- N  u
    show databases;6 T! A$ `5 a% M# w7 x3 }
EOF

9 |, t$ t( w# q) N4 D1 X) S; T( S: r$ X7 A1 H8 M5 z9 R3 q
但这并不是一个好办法,任何使用该脚本的用户都能看到该数据库用户的账号和密码,要解决这个问题,可以用mysql 数据库的一个特殊配置文件。mysql 数据库使用$HOME/.my.cnf 文件来读取特殊的启动命令和设置。其中一项设置是由该用户账户发起的mysql 会话的默认密码。要在这个文件中设置默认密码,可以加入下面的内容:6 D0 m! S) L/ y6 C. [; |+ j
[url=]复制代码[/url]代码如下:
9 m5 g2 u" d7 K  T$ p# T  U
+ u8 E: H! d# P% F[client]
8 s3 N7 e$ N: d6 j  M$ r( ipassword = 123456
& r( O2 V8 K3 N  F$ C然后,别忘了修改权限:( D( u6 Q4 Y  X6 \
chmod 400  .my.cnf
+ M- x, K+ ~' V7 w这样就可以通过脚本访问mysql数据库了,如下所示:
, T+ g1 R  n  @6 \/ L+ s; M#!/bin/bash0 `" [4 {* }1 y. X8 N- a8 d
MYSQL=`which mysql`9 _6 K1 v# X% I1 P& o: D) ?5 j
$MYSQL test -u root << EOF
1 m8 f7 p3 D) A$ i1 x- B9 ^) Nshow databases;
1 g! R! a  u1 Q4 ?2 oshow tables;* n6 n; d- P) k6 [: z7 a
select * from employees where salary > 4000;3 Z' P$ e2 A* r" ^5 ^6 y: \; x! E! J0 q6 D
EOF% y/ x4 O+ R* y
/ M% W# a/ [' @- W2 }4 t
, }4 K9 K# z9 N5 A5 ?! a8 f  I  d1 V
2. 创建数据库
通过上面的方法连接数据库,再通过重定向输入mysql语句,shell中读写mysql基本就介绍完了。只要把sql语句写对了,通过重定向执行即可,下面来看一个实例:
% c, n/ T( y, G# M- }
[url=]复制代码[/url]代码如下:. e1 n$ E! U7 j" v+ ^  N9 V

* R, i8 ^4 V  d9 g#!/bin/bash
( j2 f' R3 I7 [3 h##############################
1 v  g% C1 b6 p7 `+ O8 r$ x# @file create_db_mysql.sh
! Y) r) p& z" f# @brief create database and tables in mysql
% S  p+ L3 F& K# ^- w4 A, n# @author Mingxing LAI
0 K! L6 W' J2 O# @version 0.1
8 ]# |  g- [0 h) D- ~& }5 ~/ ~# @date 2013-01-20
; n% \& J( E+ q3 c3 b* Y; d##############################
& f3 }+ g" Q! I9 h/ w: _$ LUSER="root"7 n4 P1 N8 r! \$ u
DATABASE="students"
, `! L# C: r7 b# G6 k) M) |! M: F2 cTABLE="students"
# C0 U; Y9 N2 V, H, l######################
4 ^7 f& p( Z$ y: q* C6 o4 P6 P#crate database/ B: R/ z) t7 Z  q
mysql -u $USER << EOF 2>/dev/null
0 Q! Z. v% A7 g4 }/ RCREATE DATABASE $DATABASE
7 N. \5 \. g( T9 R0 F' S3 gEOF5 w/ ~, x* \' l1 `) x0 O! w0 a
[ $? -eq 0 ] && echo "created DB" || echo DB already exists
/ c* U% v( s* I######################" w+ K1 `5 o! ~+ _3 I
#create table& y" n2 ]; a7 t! C6 b9 j
mysql -u $USER $DATABASE << EOF 2>/dev/null* r2 f4 N7 D+ i3 G1 G0 H& X6 n
CREATE TABLE $TABLE(; h# _, A8 S+ p: d. U5 I! {
id int,* Z/ V$ t9 T3 c) b( Z9 H
name varchar(100),
: W% c2 E  @; x; m; v, W; omark int,# e) a1 q* T- l( F- Z% V& @' P) ]5 K
dept varchar(4)
. k2 G0 p( F: S4 s( W- U! U);) J6 J( Y7 b" Q' G7 U
EOF$ Y% [7 A' F% N
[ $? -eq 0 ] && echo "Created table students" || echo "Table students already exist" $ I+ x& V$ V) V/ L  T  R; ]
######################6 Z# X1 z$ {) L3 E& n
#delete data! ?4 d1 C% P  h0 ]  Z; N
mysql -u $USER $DATABASE << EOF 2>/dev/null
1 l6 x" l  R& @. a1 a0 ?DELETE FROM $TABLE;8 H4 j, Q7 _3 M
EOF
( {" a; F4 x9 P( Z
1 b- t2 T5 i" O
这个脚本比较简单,就是几条SQL语句,没什么好解释的,下面来看一下,如何读入csv 文件,然后插入到mysql数据库中。
3. 插入csv 文件
上面创建了一个学生表,表中有学生的学号,姓名,成绩,系别,假设有一个csv文件,内容如下:
6 P. d, {; G/ [) A) c
[url=]复制代码[/url]代码如下:9 c! K! c# c' o, Y7 _4 l2 g1 a
$cat data* G$ X2 O' o2 H" ]6 [2 F8 i9 S* Q
1,Navin M,98,CS
- _( w7 f+ u! Q" g2,Kavya N,70,CS1 ~! }* u/ f9 j6 e8 i- t1 s
3,Nawaz O,80,CS
) z6 ?5 [) B! w, C: h5 t4,Hari S,80,EC. z( u4 y1 q5 {
5,Alex M,50,EC
) [, K' A+ |1 E  B% y: B+ C6,Neenu J,70,EC
7 S) U  Q. N. C7 m% j* n( y6 d7,Bob A,30,EC
$ x+ w' u/ }; q8,Anu M,90,AE  |2 \/ O  i/ k( ?  q8 J/ w7 y
9,Sruthi,89,AE
+ a/ I# O0 s" D10,Andrew,89,AE
; y9 [1 y% A$ Y  |4 g
2 U& q5 \( W: K$ S8 l

4 y3 d$ i7 @2 O. J% t0 i) X* f为了将csv 文件插入到数据库,我们需要逐行读入,然后给字符串加上双引号,最后生成语句如下:
1 P. v/ Q) @0 U7 h, T( j[url=]复制代码[/url]代码如下:
1 z# a6 d# `3 S( E+ h
1 F  N' ~7 L+ {insert into students VALUES(1, "Navin M", 98, "CS");: f! e+ L9 v- y, @# M

9 O: n9 q& p; W4 `" ^2 \3 Y
4 x% b. g2 |. T, C' }  Y要解析csv 文件,最好的工具莫过于awk了,将域的分隔符指定为逗号-F,,awk就自动将各个域拆分出来了,然后在需要双引号的地方打印输出一个双引号,就能够轻松得到下面这样的数据:* R) m" C7 g6 w" c/ s' X  K
[url=]复制代码[/url]代码如下:
3 L+ T+ @9 @7 V" ~- N4 f1, "Navin M", 98, "CS" awk 代码如下:5 m  R/ p; ?4 t3 `2 [3 s* x) b
query=`echo $line | awk -F, '{ printf("%s,\"%s\",%s,\"%s\"", $1, $2, $3, $4)}'`
/ f9 U) i1 D6 D! G$ c% F& ^statement=`echo "INSERT INTO $TABLE VALUES($query);"`# E  f0 o, h) T0 d* r) C9 s4 P. |
echo $statement

0 c2 T) [) V) {0 ~" m/ L3 r2 J* R6 F% N
当然了,你也可以用其他办法,不过,几乎没有比awk更简单的了,第2种方法如下:' t; C0 i) ]5 F+ a
[url=]复制代码[/url]代码如下:
& ^/ ]6 L7 J* a+ S2 x8 D. h3 L2 F
, ]8 F  {" D5 e4 t# Q) b! w3 O2 |oldIFS=$IFS
) p9 y, h. h7 c$ v3 i: n- pIFS=,4 Y* H, a1 t" P; F! v
values=($line)' A* }. n% `- l5 |2 j8 g
values[1]="\"`echo ${values[1]} | tr ' ' '#' `\""* H8 }3 a2 g( G) Y8 z
values[3]="\"`echo ${values[3]}`\""
query=`echo ${values[@]} | tr ' #' ', '`& c3 s6 j& E. a. g4 h9 Z
IFS=$oldIFS
statement=`echo "INSERT INTO $TABLE VALUES($query);"`
% a( c6 U5 G$ y4 Yecho "$statement"  i: p% M* C$ f, f- N, A

4 n% e: i$ n4 f6 p6 J* G! y* f6 I# l, a( Q& \- j6 @( B2 F
首先通过指定域分隔符,将csv文件解析成一个数组,然后将空格替换成一个特殊的符号"#"(因为后面的替换中,会一次性输出数组,而数组是用空格分隔各字段,我们要将分隔数组的空格替换成逗号,所以这里将数据中的空格替换成"#") ,给字符串加上双引号,最后再把空格替换成逗号,把"#"替换为空格。这种方法真是让人抓狂,我第一次就没有看明白,尤其是为什么要将空格替换成"#"。
1 u. J4 N8 V3 e$ o, p; g4 e
完整的插入数据的程序如下:
( P. W3 i6 W/ t; W0 r
[url=]复制代码[/url]代码如下:
0 l3 U: T; R  e) L/ S+ |& j7 A1 I) z! l# [
#!/bin/bash
' E$ G/ w( ?4 D1 O& z- b#
1 H# ]7 ^+ x; r$ R5 L& ?# @file write_to_db_mysql.sh
. Z( m" N4 s# i& w" v) o' _# @brief wirte data to database in mysql* Y. ]0 P% c8 V7 v3 W
# @author Mingxing LAI! `0 K! f5 K  x# \+ q$ N
# @version 0.1
) J# \$ F1 I+ Z0 D: z# @date 2013-01-20
) N* @1 f2 O5 G/ g% r/ v#/ \( `: c; O. a' j6 a9 D- v
USER="root"+ n4 b* t  s, \% q) i# |9 h
DATABASE="students"
- y1 w+ ?5 {; w1 _( tTABLE="students"& H- |/ v5 n6 j: T# r
if [ $# -ne 1 ]; then; J0 e$ \; I! R2 \7 {
    echo $0 DATAFILE  m& P6 h- _- ^9 K- J; }
    echo0 G$ k8 z7 j% K6 \" g
    exit 2
# {7 b3 Z: u# M( F7 sfi8 r) k' \( r+ F0 O
data=$1+ Q* ]( p9 W; `+ ~* T
while  read line;
  Z9 N8 X0 H+ e1 cdo4 N5 `* [: s0 B, ~3 L
#   query=`echo $line | awk -F, '{ printf("%s,\"%s\",%s,\"%s\"", $1, $2, $3, $4)}'`+ e7 E2 q7 G( L  T& T& t* i
    oldIFS=$IFS! `6 l) e7 b- {: B: Y
    IFS=,
- m) s  Q; f6 f9 ?/ `, A: |, N    values=($line)
2 K" x. @, }8 ^    values[1]="\"`echo ${values[1]} | tr ' ' '#' `\""& i8 {- ^7 S  }; q5 G$ N
    values[3]="\"`echo ${values[3]}`\""+ a; n5 c+ S0 M% G, [3 l; v
    query=`echo ${values[@]} | tr ' #' ', '`
4 B5 y6 T% x. c$ q5 _6 d    IFS=$oldIFS
- p/ l5 r, N+ f7 P, V3 n& U    statement=`echo "INSERT INTO $TABLE VALUES($query);"`0 T8 y) G" g: t! [7 r
#   echo $statement
mysql -u $USER $DATABASE << EOF
/ d# W% g' C$ F+ q4 b    INSERT INTO $TABLE VALUES($query);; K* G) B9 h1 g8 s* d
EOF+ x2 t0 u; N0 y9 d3 d
done < $data
1 b; }) q% w, y+ o- u' W0 i0 Lif [[ $? -eq 0 ]]; then
7 U4 C& }3 Y! @6 O. `+ v: {8 g# j    echo "Wrote data into DB"+ n4 C& `% D4 P2 e
fi
) F  X) F4 K$ A8 T/ Y5 c

. p: Y# A2 a& L5 K/ b/ u! q! @# V; g2 [5 ?/ C) I/ U% p
4. 读取数据
知道怎么在shell 中连接mysql ,也知道了怎么在shell中批量执行sql 语句,读取数据,就没有任何难度了。5 y* k  f0 V3 _9 R8 W! G% `/ x5 H
[url=]复制代码[/url]代码如下:
0 \/ ^) M% ^. D. f( |#!/bin/bash
; ]+ `& F; ?/ t$ ~% t$ r. p; f#" b1 B5 r  E7 Y% J, M9 O8 E0 ?
# @file read_db_mysql.sh
  u3 f. q+ |% n% H1 P. ~! S+ e9 ?# @brief read data from mysql/ }& P( q& A; E- f$ p( u+ D
# @author Mingxing LAI. F( J( z$ R% }& x% e
# @version 0.1; y, m# l) k& r: m  R7 B) g, `2 U
# @date 2013-01-20, n. F3 d; x1 n  q* ~: y
#; K+ I8 l& N. G2 a, H, |
USER="root"% H. `+ l/ N$ n* ?; L4 ]: R
DATABASE="students"1 {7 u6 c5 p# ~5 n8 X( @/ Z  X2 L
TABLE="students"
#用tail 去掉表头
- \: z& e/ C6 D, Y4 H' Xdepts=`mysql -u $USER $DATABASE <<EOF | tail -n +2
8 v! t# i/ ]: Z5 eSELECT DISTINCT dept FROM $TABLE;9 z% D% g8 f! `! e
EOF`
for d in $depts; do
' s& w, \/ Z% B7 a) h3 g$ O    echo Department: $d3 X; E& J5 C3 N: y3 D; V4 S' }
    result="`mysql -u $USER $DATABASE << EOF0 \5 Z' e" P7 a4 S! a: y
    set @i:=0;- S6 s  ~, j# k$ R3 Q
    SELECT @i:=@i+1 as rank, name, mark FROM students WHERE dept="$d" ORDER BY mark DESC;
  x7 G0 ?- |$ |' ]" D4 e: TEOF`"
echo "$result"; y- P$ G) R' Z: H8 H8 ~
echo
+ q. r- r* S4 \5 Ddone, S' ~, \8 k' W# n6 t+ _" q

' k; ]3 w( N& j3 d+ K; U7 e8 A# ]; c, G: b3 }1 I2 }7 P2 |
我们还可以在mysql语句中,使用选项来控制数据的输出格式7 \2 a  a- w1 T3 r/ w" o
    -H 输出为html5 w+ x% _$ k! ?
    -X 输出为xml
如下所示:
( N: _% s4 s5 C! C
[url=]复制代码[/url]代码如下:# Q/ s  T2 H. F6 e1 V/ s
  V; k5 ~# r$ H# Z9 ]
#!/bin/bash
; ?% C* s0 d" I/ K3 JUSER="root"0 }# v, N4 s; F$ n2 }
DATABASE="students"
/ }8 d% W7 I, U: ~TABLE="students"/ J7 {( T* G' [) E) p5 j
mysql -u $USER $DATABASE -H << EOF. r/ b3 ]  K5 W) ^
select * from $TABLE
( t( P5 d: m/ V6 ?$ ?7 q& iEOF/ N9 `3 S% h8 o8 g: B) R( b

# _8 ?. Q. k1 W5 O  t7 ]5 d, y0 _! v5 [1 J5 _
html 格式的可读性比较差,输出效果如下:  H" l( s5 R1 @$ @: t* d
[url=]复制代码[/url]代码如下:
: i# Z4 n" F. q' S<TABLE BORDER=1><TR><TH>id</TH><TH>name</TH><TH>mark</TH><TH>dept</TH></TR><TR><TD>1</TD><TD>Navin M</TD><TD>98</TD><TD>CS</TD></TR><TR><TD>2</TD><TD> Kavya N</TD><TD>70</TD><TD>CS</TD></TR><TR><TD>3</TD><TD> Nawaz O</TD><TD>80</TD><TD>CS</TD></TR><TR><TD>4</TD><TD>Hari S</TD><TD>80</TD><TD>EC</TD></TR><TR><TD>5</TD><TD>Alex M</TD><TD>50</TD><TD>EC</TD></TR><TR><TD>6</TD><TD>Neenu J</TD><TD>70</TD><TD>EC</TD></TR><TR><TD>7</TD><TD>Bob A</TD><TD>30</TD><TD>EC</TD></TR><TR><TD>8</TD><TD>Anu M</TD><TD>90</TD><TD>AE</TD></TR><TR><TD>9</TD><TD>Sruthi</TD><TD>89</TD><TD>AE</TD></TR><TR><TD>10</TD><TD>Andrew</TD><TD>89</TD><TD>AE</TD></TR></TABLE>
' f  p" W) c5 l) X& `0 s# \$ U% f: @& S3 T# }
可读性差也可以理解,因为人家觉得,你没必要修改么,直接以html形式展示数据就可以了。
4 E8 i. s; ~( v4 M[url=]复制代码[/url]代码如下:
  _9 K' T) p9 kid    name    mark    dept
! ~' n, E' ]" ]3 \- b1    Navin M    98    CS
3 N: L9 W" w. ]; b  ~" B. b2    Kavya N    70    CS
" r2 E0 R. F# j$ F/ A6 K3 Q  R1 X3    Nawaz O    80    CS
5 l5 B8 q0 L3 V: w. u3 f4    Hari S    80    EC' ?1 K9 s' }( Z* v+ S4 _2 b
5    Alex M    50    EC
  F# ]- b! f! Q+ f% p6    Neenu J    70    EC. n3 c6 X& l0 D* X3 H4 q
7    Bob A    30    EC7 h( o5 F5 m9 N( f0 `8 n- o0 _' j
8    Anu M    90    AE3 G6 z1 U2 G8 F  h
9    Sruthi    89    AE
3 y, \" J  }  ?. S8 ^5 C& a10    Andrew    89    AE" c  m9 @! J( H8 L* s6 C- R
% s0 b& [5 t% r0 Q) W

0 C7 p$ @# a( j4 [+ z& l: Kxml形式的数据显示就比较正常了,直接将上面的-H 换成-X,输出如下:" G* {8 b, h* P
[url=]复制代码[/url]代码如下:& y' B8 A1 w! Q; P1 S. L1 M
<?xml version="1.0"?>
" Z! j" `2 Y9 `# S( K<resultset statement="select * from students" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
6 m5 P% ^) R" t  <row>
/ c  o2 p# M# w- m; Z2 Z5 {  O/ U3 _    <field name="id">1</field>1 D4 H$ ?; n1 B. f
    <field name="name">Navin M</field>; x. |1 b) y9 o$ b7 @; W
    <field name="mark">98</field>% D. X+ E3 K% D: k, T2 Z7 ^: k
    <field name="dept">CS</field>
: j6 D8 n8 [4 h  G3 @  </row>6 `; S6 L# K' V. t8 B$ `
  <row>
, ?2 E  a' C0 [  z9 {    <field name="id">2</field>4 t" Z5 z; z$ n% u: o) |- @. |4 G
    <field name="name"> Kavya N</field>
5 z2 d% @! a' E7 w/ p& \    <field name="mark">70</field>
7 K, Z5 }6 O* P& F5 m( o6 F    <field name="dept">CS</field>
  U) e4 e" e5 i/ I4 a2 {$ s# j, L  </row>2 W5 E$ M, T( b4 T
</resultset>9 g9 t& t, a; e) `9 `

4 n8 C# C$ r5 L
/ d! t  v. {& x完。
3 @0 A+ W/ }, k" D
 楼主| 发表于 2017-1-13 09:36:09 | 显示全部楼层
>use database; . _0 D# F; L0 A+ z% {
maridb>select volume_id,instance_uuid into outfile '20170106test.txt' from volume_attachment  where deleted='0';
8 w1 ?+ J) G# |2 D7 ?5 l: G$ J
 楼主| 发表于 2017-2-28 11:42:27 | 显示全部楼层
二、批量插入数据脚本
, f/ w0 A8 r. |#!/bin/bash
8 {/ X1 B, J3 m9 }  B#create by oldboy 20110319  m/ X- V) H5 }
#qq:313337419 `. O6 Q# p: x7 |
MysqlLogin="mysql -uroot -poldboy" #→定义登陆mysql的命令,方便下文使用
6 B: D( [8 n  A( H2 t. c#MysqlLogin="mysql -uroot -poldboy -S /data/3306/mysql.sock" #此行适合单机多实例数据库的方式
: Y/ B' m8 e, G% N& V% si=1+ ^* ^; A0 R6 i6 {( [$ m
while true #→true表示永远为真! v8 ~, P; E; i5 Q. N
do
% f7 _1 N; Z& r" q. t. | ${MysqlLogin} -e "insert into test.student values ("$i",'oldboy"$i"','m','21','computer"$i"');"
3 _3 a2 O" T! d6 ?9 p8 y) I #${MysqlLogin} -e "insert into oldboy.student values ("$i",'oldboy"$i"','m','21','computer"$i"');"8 n4 R' x- ~5 c% |: A+ r
#如果是多张表可以同时插入多张表,我这里给出的例子,是插入不同的记录,可以用于做各种小测试,比较适合各类初级不会mysql存储过程的运维人员。
$ ]1 {3 F( V1 R4 T) c ((i++))) E' z) c- }1 V& s
sleep 2;; q  x6 t. c& P& ~8 @
done
 楼主| 发表于 2017-2-28 11:49:20 | 显示全部楼层
#!/bin/bash
' a# K4 B  N+ E9 e9 M#: G) B1 ~! y& l+ }: Q
# @file write_to_db_mysql.sh
8 C" q0 U) u# h8 b* L9 Y/ p# @brief wirte data to database in mysql
! }* ]9 ]! ^5 O# M& v" V7 _# @author Mingxing LAI
- d7 X9 A# U7 P7 Y  U2 \7 N# @version 0.1! k1 R, V  ~3 X3 x! Y+ D6 }
# @date 2013-01-20
. |6 r. q* @+ Y# _' V) l) T#
2 u# {/ H- T- t# ]+ jUSER="root"
, _! d  U8 ?: b$ r2 q( }DATABASE="students"3 }& K" G8 O  g9 Z- Q+ {' D
TABLE="students"" Z+ v  L9 q! L7 e" p
6 Y% m9 o4 O' V
if [ $# -ne 1 ]; then0 X" \( R- f7 l$ o  f& \
        echo $0 DATAFILE7 r7 u6 Z% P+ p1 c( w) f# j
        echo6 l* y; \7 x- M, p
        exit 2% z, H9 d! I# c6 m- L
fi
, [; }0 u5 e) x( \6 Z2 l! ?5 C$ V' D1 h# K1 f* m3 }: D

% u+ G1 R) Y$ \9 sdata=$12 l6 O+ @4 M8 v: r2 g4 `2 C" I
while  read line;
& X8 C3 c( n1 _& @* wdo
2 Z3 s, l0 U4 P, @# e#        query=`echo $line | awk -F, '{ printf("%s,\"%s\",%s,\"%s\"", $1, $2, $3, $4)}'`
* Q, t- m- R2 `* z* m7 o        oldIFS=$IFS' t0 I* M& z) l: ~. x
        IFS=,' g6 I  y7 {' y  ?8 J5 x
        values=($line)1 B" w( s* F7 \& a
       
) ?" r9 r- v3 \  R2 P* H        values[1]="\"`echo ${values[1]} | tr ' ' '#' `\""
2 \7 e: Y% O* N1 G7 |0 p        values[3]="\"`echo ${values[3]}`\""
- ~, e  t' F0 G* k! r$ H. A  M9 q. j        . y7 D& e- R6 L0 ]) W  w3 D
        query=`echo ${values[@]} | tr ' #' ', '`
' \( e5 x' ]: ?& v. M        IFS=$oldIFS
& I! w/ Z- m* v4 D, e$ O3 P
0 l3 F7 [, |+ Q" m; _, f5 p8 }        statement=`echo "INSERT INTO $TABLE VALUES($query);"`
5 N2 u" {2 o1 i#        echo $statement, |" [$ P* K% W
- u, z  }2 l6 ^# D4 r/ j4 m9 P
mysql -u $USER $DATABASE << EOF
3 c7 l% e  i( ^        INSERT INTO $TABLE VALUES($query);& l3 P; X7 A) N- }2 n  w/ I2 A/ y
EOF0 h3 k4 v9 Q) p! r: C
        $ t0 ^! H) w9 M6 R' [- }& R
done < $data
2 L; _3 O1 o2 D0 |( a9 I6 j
. i; t/ _6 _' nif [[ $? -eq 0 ]]; then1 e8 z5 {' d( A. l  z
        echo "Wrote data into DB"+ u7 @' C* H5 s! l- |0 [% ?
fi
您需要登录后才可以回帖 登录 | 开始注册

本版积分规则

关闭

站长推荐上一条 /4 下一条

北京云银创陇科技有限公司以云计算运维,代码开发

QQ|返回首页|Archiver|小黑屋|易陆发现技术论坛 点击这里给我发消息

GMT+8, 2026-4-8 10:33 , Processed in 0.047881 second(s), 23 queries .

Powered by Discuz! X3.4 Licensed

© 2012-2025 Discuz! Team.

快速回复 返回顶部 返回列表