找回密码
 注册
查看: 4820|回复: 3

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

[复制链接]

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
发表于 2017-1-13 09:32:06 | 显示全部楼层 |阅读模式
本文介绍了如何在shell中读写mysql数据库。主要介绍了如何在shell 中连接mysql数据库,如何在shell中创建数据库,创建表,插入csv文件,读取mysql数据库,导出mysql数据库为xml或html文件, 并分析了核心语句。本文介绍的方法适用于PostgreSQL ,相对mysql而言,shell 中读写PostgreSQL会更简单些。
1. 连接mysql 数据库
shell中连接数据库的方法很简单,只需要指定用户名,密码,连接的数据库名称,然后通过重定向,输入mysql的语句,如下所示:" b3 N  [  `$ l- t4 n
[url=]复制代码[/url]代码如下:; n4 t. R  t! P4 D5 L6 L2 f
mysql -u USERNAME -p PASSWORD DATABASENAME <<EOF 2>/dev/null+ `. }* p: A0 l; L4 n
    show databases;
! w) z( z  n# w- |5 Z* T: rEOF
3 l9 s; V& M/ e6 Y0 K
; T# _  X' D) I$ W1 K$ U: X
但这并不是一个好办法,任何使用该脚本的用户都能看到该数据库用户的账号和密码,要解决这个问题,可以用mysql 数据库的一个特殊配置文件。mysql 数据库使用$HOME/.my.cnf 文件来读取特殊的启动命令和设置。其中一项设置是由该用户账户发起的mysql 会话的默认密码。要在这个文件中设置默认密码,可以加入下面的内容:
( x4 k3 F& \+ c8 R
[url=]复制代码[/url]代码如下:# T8 ~- `) {2 ?5 e; j9 X

$ k+ l$ O% {6 \/ t: D  e[client], s' Q5 T5 U% L0 G  ]
password = 1234567 N# ~4 F- f: r9 I
然后,别忘了修改权限:6 z6 J9 O" r& _9 U
chmod 400  .my.cnf
# ^( f/ |2 [4 @: T2 C! i6 H0 Q这样就可以通过脚本访问mysql数据库了,如下所示:) s, }9 U- W4 h3 t2 I; I
#!/bin/bash
2 c4 z/ ^/ d4 JMYSQL=`which mysql`' I/ o' q8 A3 Q5 G) o. j7 f* k  C
$MYSQL test -u root << EOF1 G* T2 e* B7 j5 I$ z( \3 N
show databases;6 x$ Z2 g+ o2 ?
show tables;; ?! T' A9 L, `2 I5 j1 s- `
select * from employees where salary > 4000;1 e& w) u  O9 e# b5 r
EOF$ K7 ^# c, G) m

2 f! P- j+ e7 ?0 b5 A: I0 h% {) `, G* c: z, Y% P0 \
2. 创建数据库
通过上面的方法连接数据库,再通过重定向输入mysql语句,shell中读写mysql基本就介绍完了。只要把sql语句写对了,通过重定向执行即可,下面来看一个实例:
! B+ ]' P9 X, Y: f+ |9 n; A
[url=]复制代码[/url]代码如下:
) G. p" f9 x7 \* e
0 D& G: T6 W/ f& N" }#!/bin/bash
0 u( T/ ]9 z- `) M. S, s##############################/ k; p- D: O; {6 k# T0 c
# @file create_db_mysql.sh
- }7 T) k) `8 {( f9 \# @brief create database and tables in mysql( ]% e7 q7 O  g( T6 o
# @author Mingxing LAI
9 V/ Y$ J: C( e0 }# @version 0.1
; R% R/ B. t# U8 W  z7 ^. g# @date 2013-01-207 q# O( h" P  s1 ]. i1 a
##############################/ J' z0 M% K' F4 I" k
USER="root"
% [* A1 [* r6 v3 y$ FDATABASE="students"" u, W; W) w# p" i; r1 A
TABLE="students", e5 P' Q9 _# A9 x2 z
######################
' q$ e9 N% w2 H4 U( K7 m#crate database$ Q$ S& L) U/ i
mysql -u $USER << EOF 2>/dev/null
& i: v+ s/ B  u4 H$ x1 ?+ K+ ^CREATE DATABASE $DATABASE1 N; L, g0 K* r' R& e9 h
EOF
8 L5 U( j: x3 `/ {6 S, ^5 o. b# T[ $? -eq 0 ] && echo "created DB" || echo DB already exists& R" k5 E: ?1 b" B  I8 K( b
######################
( k4 j( B# r9 U4 X1 z" x2 [% \9 p#create table/ o: H9 a. X4 g8 D4 O
mysql -u $USER $DATABASE << EOF 2>/dev/null$ `: ^( H+ D. Q/ f7 n* \: w6 m7 P, i
CREATE TABLE $TABLE(
' w0 |% q5 i' _& E0 ^. Rid int,7 z' u" z- n+ r! j
name varchar(100),2 @7 P# ^$ B0 Y0 F
mark int,
9 G1 D' T9 v! `" K/ ]/ K# ^* F+ }8 }dept varchar(4)$ n. N# U$ r, b0 F* {4 t0 L
);
( S  D! x& _7 B0 Y. {% M8 ZEOF
# @* `7 Z: U: _2 d% `9 c: x, T7 R[ $? -eq 0 ] && echo "Created table students" || echo "Table students already exist"
2 E1 F) w& ]8 E7 A+ }% Y- l$ m9 K######################: N0 p% E6 t4 n. X+ q& U8 O! k
#delete data
3 o/ s1 h% g1 t& ~mysql -u $USER $DATABASE << EOF 2>/dev/null% w/ G( n  |+ t% I) e
DELETE FROM $TABLE;/ a1 ?; W' D. G
EOF

, G4 a  J3 C; X1 K0 ?* f# U
5 G- p3 N& `& I& z3 p
这个脚本比较简单,就是几条SQL语句,没什么好解释的,下面来看一下,如何读入csv 文件,然后插入到mysql数据库中。
3. 插入csv 文件
上面创建了一个学生表,表中有学生的学号,姓名,成绩,系别,假设有一个csv文件,内容如下:- O. ]2 ?8 k+ {' ?; @
[url=]复制代码[/url]代码如下:
- M2 V4 X( C% Z$ |$cat data
4 v6 r) {3 K8 s1,Navin M,98,CS
$ S8 p$ F1 n7 _1 s/ s: Y6 ?2,Kavya N,70,CS
7 P2 |( b( p, D4 e$ Q2 D3,Nawaz O,80,CS  V9 I4 p  E3 ]5 C! T5 l
4,Hari S,80,EC
( I5 n. w+ k0 A$ P3 d5,Alex M,50,EC
7 s4 Q; O, q  U2 w6,Neenu J,70,EC6 Q$ Q$ ?! M8 ]. Y. r! n
7,Bob A,30,EC
% T( O# b/ \8 X* Y8,Anu M,90,AE
4 N* C) g; N2 o9,Sruthi,89,AE2 z0 b$ Z+ Z" J; I" \
10,Andrew,89,AE9 y5 V' y) l" A" _# L' Y

0 A4 `# H. _3 }3 c! x- y/ i
( o0 g5 o% M0 i& X9 Y8 u& {# \为了将csv 文件插入到数据库,我们需要逐行读入,然后给字符串加上双引号,最后生成语句如下:
2 k% k9 T3 f9 V- u+ [" Z5 N[url=]复制代码[/url]代码如下:
; e/ l! z8 J  V. d7 _1 W8 T, P2 @: k7 m! V: m
insert into students VALUES(1, "Navin M", 98, "CS");
/ g, \* t0 ~' y/ E: D8 v% C! `+ {
# L. g3 z0 o* L: x7 P

* m" n/ d. e, f) y要解析csv 文件,最好的工具莫过于awk了,将域的分隔符指定为逗号-F,,awk就自动将各个域拆分出来了,然后在需要双引号的地方打印输出一个双引号,就能够轻松得到下面这样的数据:
% s& Y1 Q1 O( F/ I" Y* V[url=]复制代码[/url]代码如下:5 R/ h; v1 R# \1 {" ~
1, "Navin M", 98, "CS" awk 代码如下:3 b$ m2 T& G7 I* k  R% g- g' O3 m, T
query=`echo $line | awk -F, '{ printf("%s,\"%s\",%s,\"%s\"", $1, $2, $3, $4)}'`
9 _! J0 i) M2 B/ a' t- P+ wstatement=`echo "INSERT INTO $TABLE VALUES($query);"`
& `4 {9 ?! J! o4 I( A6 R$ T5 Decho $statement
- o% X/ Z0 `* H% E; U- K' T, e; Z
) P, ?; X' k% U& v( v
当然了,你也可以用其他办法,不过,几乎没有比awk更简单的了,第2种方法如下:; k% H) [. I9 J7 y& v
[url=]复制代码[/url]代码如下:  d% j8 N+ j) a; k. z+ T3 d9 d

" u( Q, j( J: b6 aoldIFS=$IFS
- C8 z% o4 C8 x' S$ s: QIFS=,
9 U3 s+ ?5 o! B+ z" {9 ]; p% {values=($line)
' G4 K) R0 h/ a) Z+ [5 c( L% g
values[1]="\"`echo ${values[1]} | tr ' ' '#' `\""6 B* g0 [/ X' R' y: r7 i
values[3]="\"`echo ${values[3]}`\""
query=`echo ${values[@]} | tr ' #' ', '`& q0 f( C7 G0 v; ]& t3 E
IFS=$oldIFS
statement=`echo "INSERT INTO $TABLE VALUES($query);"`4 i8 I3 w+ G4 `8 O5 H* w
echo "$statement"
' Z% }& w& s7 B" W4 }, w) I4 R  w

, y. `- c, L! X3 U8 t0 S
9 k1 Y* A' J+ M' L# K) h* V7 o首先通过指定域分隔符,将csv文件解析成一个数组,然后将空格替换成一个特殊的符号"#"(因为后面的替换中,会一次性输出数组,而数组是用空格分隔各字段,我们要将分隔数组的空格替换成逗号,所以这里将数据中的空格替换成"#") ,给字符串加上双引号,最后再把空格替换成逗号,把"#"替换为空格。这种方法真是让人抓狂,我第一次就没有看明白,尤其是为什么要将空格替换成"#"。
+ S* L4 O$ h# s
完整的插入数据的程序如下:2 Q& S1 ]5 d% R: R0 }. d: g
[url=]复制代码[/url]代码如下:
$ P9 e" f+ B( r7 t7 D, N( E2 v/ H  E/ ~' b6 o! W
#!/bin/bash- Y& W6 \8 ?6 Z% y
#
' L# b7 [9 C( C3 k: Q- n) G2 D$ ~# @file write_to_db_mysql.sh
4 l% v  D. o9 v. J5 }& Y- X# @brief wirte data to database in mysql
1 Y/ Q# K* ^  i& C( r8 ?. B# @author Mingxing LAI( ^1 w- G0 C- [) a" Z5 b! B
# @version 0.1+ _- t( q/ J; `1 C
# @date 2013-01-20" _- Z6 o6 h& `" e
#. v  e8 E6 s* W) K- T! |
USER="root"- B. g% w& \: K3 z# K* e
DATABASE="students"% |" }- z* L: x
TABLE="students"9 O% R' I! e1 Y$ g; c* Y4 u
if [ $# -ne 1 ]; then
9 v1 R8 m% b& q, J    echo $0 DATAFILE3 s/ j0 }0 [6 B2 ]8 c
    echo
- J6 @8 }0 A5 D4 W    exit 2% M  K( o/ R$ w8 N
fi' [; G1 O. k3 ]' k2 f0 Z& u3 s
data=$1
- g  E: w; F8 D) h+ |2 Zwhile  read line;: t, ?1 x) e# |8 p' @
do! R* F+ j) _& w0 a6 {4 I
#   query=`echo $line | awk -F, '{ printf("%s,\"%s\",%s,\"%s\"", $1, $2, $3, $4)}'`
7 o3 V, I2 G9 \% g2 O" @    oldIFS=$IFS
- K4 ~5 J+ ?5 @" H! y" a9 [    IFS=,, w4 b; M' |+ m& A/ {- k9 T5 M' [
    values=($line)
4 V+ r5 U3 h! _# M1 c1 Y" T    values[1]="\"`echo ${values[1]} | tr ' ' '#' `\""
& q; k- W- B( i1 P5 D( T8 ^    values[3]="\"`echo ${values[3]}`\""2 V0 d' @3 X- D
    query=`echo ${values[@]} | tr ' #' ', '`4 G& n6 {* `" b) X. R. z! X' l
    IFS=$oldIFS
# O8 }. L: {, W# `2 l: R    statement=`echo "INSERT INTO $TABLE VALUES($query);"`
0 d4 ]; u2 }$ T#   echo $statement
mysql -u $USER $DATABASE << EOF
1 b# u" \6 y7 n    INSERT INTO $TABLE VALUES($query);
" Q2 w0 i6 v- B  y4 J0 fEOF% N! o3 @/ B& ?; P0 G
done < $data
" A5 o: w7 M0 _; M% a, lif [[ $? -eq 0 ]]; then& C. L5 ]1 S. b+ [
    echo "Wrote data into DB"
8 x+ y% Q" X5 _" [7 z: n0 afi* D5 g/ C' B$ x

5 A: |7 Y" w6 y* b1 L! h1 n& D) I, b, x. t+ n2 s
4. 读取数据
知道怎么在shell 中连接mysql ,也知道了怎么在shell中批量执行sql 语句,读取数据,就没有任何难度了。8 n# J( G& [* l% b( Y) M7 `3 P
[url=]复制代码[/url]代码如下:
7 M+ V" G5 h5 D! Q#!/bin/bash; X3 l8 Q: K7 |4 G8 L
#
1 m) {4 ^. m" y9 E# @file read_db_mysql.sh& e" R2 T0 {/ ~- |: D
# @brief read data from mysql
4 P3 [, X5 \3 Z5 ^3 P# @author Mingxing LAI6 o; K- d4 J. _+ J6 L3 I
# @version 0.1
2 ?* m4 m5 R5 w0 e: B; q# @date 2013-01-20
3 Q2 {) B! V# s#9 X' n5 \$ `7 Y' ~) k/ w) n
USER="root"
9 q+ w( W( O' F9 R$ z* pDATABASE="students"6 |# }- S6 a, i' a* l2 [  s7 }" _
TABLE="students"
#用tail 去掉表头
) @% `. ?3 ^/ g( |/ C- j$ Gdepts=`mysql -u $USER $DATABASE <<EOF | tail -n +29 q$ J+ e: \9 R( s, [! u. H
SELECT DISTINCT dept FROM $TABLE;
6 l$ F- t; Y/ J. IEOF`
for d in $depts; do
5 U$ t$ J/ \4 Q3 a    echo Department: $d
8 s5 q2 i2 t* w5 Z$ G) x    result="`mysql -u $USER $DATABASE << EOF
5 _6 O3 }; k4 T( h    set @i:=0;
) {& K+ i+ Q5 \    SELECT @i:=@i+1 as rank, name, mark FROM students WHERE dept="$d" ORDER BY mark DESC;) A7 V; ^* Q$ X# W0 |* h) x
EOF`"
echo "$result"% b  f& X; [# l  e( N7 M( I( t
echo
) W6 {8 h# ~& ~% Fdone
  C0 d% c) l/ V/ V
: z/ h# W4 l& _& T9 _, ^3 r( a+ G
! q2 S+ W; \& }& ?4 S
我们还可以在mysql语句中,使用选项来控制数据的输出格式
0 c4 ]2 Z& d; p$ l4 T) S6 [
    -H 输出为html
" I) q$ U  E, S2 \( ~3 n1 h5 f5 s    -X 输出为xml
如下所示:
( P) B" t9 C( _0 o
[url=]复制代码[/url]代码如下:$ {, L# N# L. F+ ]
/ D6 {5 o& y1 b( S7 B( [0 O) M8 E+ _) ?
#!/bin/bash8 F  p& d7 e" S& c3 ^) J% N
USER="root"6 P, b1 L- t+ G
DATABASE="students"
* N% h( r% e7 {) k0 Y9 ITABLE="students"% C/ y, n0 @0 g: M  V
mysql -u $USER $DATABASE -H << EOF% I- d% {7 c$ t# A
select * from $TABLE: a. Z) ]$ T  ~; ~- Q$ E
EOF$ x; g' r; N' u4 Z7 R- G. y7 E
1 u* a" G& ^9 @, ]

0 u; b7 S$ R8 a; g; _& W2 r* bhtml 格式的可读性比较差,输出效果如下:
) k  ?7 \& T/ M! B# i[url=]复制代码[/url]代码如下:0 x- ^0 e& {+ n* @
<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>
; A: k9 W/ E! [& R. f' U( N+ d: S" L; P( \. r
可读性差也可以理解,因为人家觉得,你没必要修改么,直接以html形式展示数据就可以了。
8 |# D0 @: n9 W4 Y/ I8 K+ J[url=]复制代码[/url]代码如下:3 `: ]% n/ b; H/ L; t6 b& a
id    name    mark    dept
: W3 G: `: N5 D. i% o1    Navin M    98    CS
# q1 C% ^" n9 n# T2    Kavya N    70    CS
( ?2 f9 w; P7 z0 {4 l  c3    Nawaz O    80    CS
( g0 {3 W% l+ Q9 N, V  y- C3 ]( I4    Hari S    80    EC
! [  b: f( t2 F5    Alex M    50    EC+ E) H7 n8 A6 H% b- C9 f
6    Neenu J    70    EC
) p- V# P9 i* j% ], J( I) Z& T. g( Y6 r7    Bob A    30    EC  a$ S7 w* \! v
8    Anu M    90    AE% Y+ r( l/ c9 }6 B# B9 r, B% \
9    Sruthi    89    AE
  d" R5 ]+ U- O10    Andrew    89    AE
# d0 a5 F1 x2 I) ^1 J. e

! c# q/ t4 H. [  |7 v" P& E' v% c- B2 ?$ L, {
xml形式的数据显示就比较正常了,直接将上面的-H 换成-X,输出如下:
: D3 ], `) Z! X& h, U[url=]复制代码[/url]代码如下:* Z" S) X1 e3 P- @: F2 A1 T
<?xml version="1.0"?>! s" R4 R1 |: H- i# W) }. M9 f, [* y
<resultset statement="select * from students" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
9 }+ X0 M; O) a- y( U# U  <row>
( ?; V1 ?- C( q& U( K/ w( M7 j    <field name="id">1</field>
( U* q- i1 }' O$ |+ A    <field name="name">Navin M</field>
- h6 W. e4 g* d: T) n    <field name="mark">98</field>
  s) q, j1 o/ m/ \    <field name="dept">CS</field>; J. H+ y1 G% k' I4 q4 V$ K& N
  </row>
1 ~/ `8 @! L4 n* `1 l4 N5 Z  <row>
1 {& ]2 G6 @, K: `5 Y    <field name="id">2</field>5 p8 g( W* a) G: o; @! \
    <field name="name"> Kavya N</field>
1 c$ Y' L" }" F7 f% Q    <field name="mark">70</field>1 ~+ ^" E1 s+ g( f
    <field name="dept">CS</field>/ {1 W9 _  ]: C. l" Y
  </row>
+ W+ L' g* D5 b0 U, z</resultset>; O, a, Q! Y5 V: X4 q, @" P

) J. d, e: @0 ?+ |  O4 H+ @, v+ N9 i# l7 y. t
完。
% h) V- Z6 T& w& S5 }1 D

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
 楼主| 发表于 2017-1-13 09:36:09 | 显示全部楼层
>use database; 5 v* b( v+ H' z( g3 S
maridb>select volume_id,instance_uuid into outfile '20170106test.txt' from volume_attachment  where deleted='0';$ X9 a4 H# [+ O& [* R  ~

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
 楼主| 发表于 2017-2-28 11:42:27 | 显示全部楼层
二、批量插入数据脚本
" d/ p( Y: e# |" n: o( f#!/bin/bash
9 `2 C" `: s! \6 [/ l% Q" z2 D7 }#create by oldboy 20110319  F. Z8 w  V/ p6 M
#qq:31333741
! M2 `0 }1 p& f/ YMysqlLogin="mysql -uroot -poldboy" #→定义登陆mysql的命令,方便下文使用
* s% A5 Q+ [) u. \4 H& }' h#MysqlLogin="mysql -uroot -poldboy -S /data/3306/mysql.sock" #此行适合单机多实例数据库的方式/ p' L" e, ~2 s
i=1
- [4 s. U8 ]8 c9 Q9 uwhile true #→true表示永远为真
. @( _. P* g( J. vdo' T2 Q  j. B, w; n& E. I9 H" ]% t8 `
${MysqlLogin} -e "insert into test.student values ("$i",'oldboy"$i"','m','21','computer"$i"');") V, L  [! P1 {/ H% S; ^
#${MysqlLogin} -e "insert into oldboy.student values ("$i",'oldboy"$i"','m','21','computer"$i"');"6 I2 F# q- r9 [  Y
#如果是多张表可以同时插入多张表,我这里给出的例子,是插入不同的记录,可以用于做各种小测试,比较适合各类初级不会mysql存储过程的运维人员。
/ k! L- R# D% M$ C2 x) B ((i++))' C8 n4 Q, q" c' |3 @( d2 C
sleep 2;& s6 B4 N1 K" i$ Z( b! I9 L- S  u$ n
done

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
 楼主| 发表于 2017-2-28 11:49:20 | 显示全部楼层
#!/bin/bash. z8 W9 t( p. z7 t5 G; J3 o
#& g' e- q0 U7 E
# @file write_to_db_mysql.sh4 ~) {, ]* s: s. U; v0 @( k5 G
# @brief wirte data to database in mysql
: E9 N! g8 s- b/ A1 o+ d7 W# @author Mingxing LAI
% K2 [# }$ F, A, Q5 @  X6 L# _# @version 0.1
2 @; s# l/ t* p  U' P# @date 2013-01-20
# u; t1 [3 l7 q4 r#
& E6 m% y) P5 X# zUSER="root"
0 M8 w8 ~% Y* f, F- z" J4 A, q8 aDATABASE="students"
; k) Y& g+ H5 MTABLE="students"2 y$ j  i: @, A- J: `6 y- p
( Y9 P" L. N& p" R0 B9 X. U' c/ `9 E
if [ $# -ne 1 ]; then# h+ M4 g' j: D1 k, c6 G
        echo $0 DATAFILE- p5 f% G; _- V% S
        echo0 O. b; z0 f+ C6 ?
        exit 2
' `/ U! x' V3 |0 Kfi4 c9 N/ o8 k4 f' D6 _& B: g
9 W$ ^$ {' M; w$ e6 C

# D% L4 o# I( e7 o$ ]' Hdata=$1# W, l3 E8 E7 `; g8 s* x0 A
while  read line;/ H4 f; ~  [' Z4 n
do! A/ a& A) M$ ]1 @- J* M4 \
#        query=`echo $line | awk -F, '{ printf("%s,\"%s\",%s,\"%s\"", $1, $2, $3, $4)}'`
9 A$ v+ p" I2 f, \- d8 N        oldIFS=$IFS: \& w! k9 p) j+ S  \5 _% e2 m8 h' L
        IFS=,
% a2 y8 v2 g# x+ m4 ~        values=($line)9 w$ O0 I$ [) H4 s' N% Q/ Y( F0 d
        + n( b; F1 J  y
        values[1]="\"`echo ${values[1]} | tr ' ' '#' `\""- m: F* I; X6 J, N- {7 ]
        values[3]="\"`echo ${values[3]}`\""
3 R0 S' A3 ?- ?. S8 R       
" G) O9 x1 m8 m. S        query=`echo ${values[@]} | tr ' #' ', '`
. Y) o) v5 ^- ?+ b# j' I        IFS=$oldIFS1 X: C( A: @) J! i
7 {+ a0 k! A/ }( v3 B
        statement=`echo "INSERT INTO $TABLE VALUES($query);"`
1 C# K. b" J2 e. q#        echo $statement4 @' b; L8 |3 L) d

6 G$ `, M( O, c$ W( imysql -u $USER $DATABASE << EOF
2 u, I# I1 p- c, o- B        INSERT INTO $TABLE VALUES($query);
) o: t! _# ?  z- PEOF
; l% p5 ]1 S( B        9 K' u8 }0 b( r. T5 m' W
done < $data
& J; x: W6 s4 H3 n% s% S. L3 W4 F& ~& l" h/ \3 S! B
if [[ $? -eq 0 ]]; then
6 I1 y% x% N2 F- q$ u% F        echo "Wrote data into DB"0 ~) T" r2 U& K. T# O/ n
fi
您需要登录后才可以回帖 登录 | 注册

本版积分规则

返回首页|Archiver|手机版|小黑屋|易陆发现技术论坛 ( 蜀ICP备2026014127号-1 )

GMT+8, 2026-6-12 02:22 , Processed in 0.018814 second(s), 23 queries .

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

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