提问:在shell中怎样将mysql的查询结果的字段值赋值给shell变量?提问于 2010-9-29 0:33:15 如题query.sh  1 execute_sql="  2 select sentence,translation,handle,priority    3 from friendly_arse.sentence_english  4 where handle=$1;  5 "  6 echo $execute_sql > temp.sql  7    8    9 mysql -user=peek_guy -password=sesameopendoor  10  如题我要将translation的字段值赋给一个shell变量然做显示,我该如何做?如果不能实现,有没有其他办法可以操作字段值....感谢........在shell中怎样将mysql的查询结果的字段值赋值给shell变量?相关问题《c大学教程》里的simpletron编译器如何实现???急~!~!~!问题:析构函数与虚函数数据结构vs2005 编译 stlport 的问题。写了个单链表 但却提示内存不能为read拜托各位大侠帮我看看错在哪关于选择方向。(新学员、、望知情人给予指点)遇到一难题!望各位高人指点!毕业设计,选课题,要用c++。new,delete急!!!高人帮我看一下!急急急...!!!高人帮我的时候到了!代码c++程序不能编绎如何回事c++模版类+静态变量的问题求教,这是为啥呢?编译连接都通过了。在shell中如何将mysql的查询后果的字段值赋值给shell变量?   如题query.sh  1 execute_sql="  2 select sentence,translation,handle,priority    3 from friendly_arse.sentence_english  4 where handle='$1';  5 "  6 echo $execute_sql > temp.sql  7    8    9 mysql --user=peek_guy --password=sesameopendoor   10  如题我要将translation的字段值赋给一个shell变量然做显示,我该怎么做?如果不能实现,有没有其他办法可以操作字段值....感谢........解决方法shell操作mysql (2010-05-24 21:05:15)转载标签: 杂谈分类: MySQL学习        在shell开发中,很多时候我们需要操作mysql数据库(比如:查询数据、导出数据等),但是我们又无法进入mysql命令行的环境,就需要在 shell环境中模拟mysql的环境,使用mysql相关命令,本文总结几种shell操作mysql的方法,供大家参考。方案1mysql -uuser -ppasswd -e"insert LogTable values(...)"  优点:语句简单缺点:支持的sql相对简单 方案2准备一个sql脚本,名字为update.sql,例如:CREATE TABLE `user` (    `id` varchar(36) NOT NULL COMMENT '主键',    `username` varchar(50) NOT NULL COMMENT '用户名',    `password` varchar(50) NOT NULL COMMENT '用户密码',    `createdate` date NOT NULL COMMENT '创建时间',    `age` int(11) NOT NULL COMMENT '年龄',    PRIMARY KEY  (`id`)  ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='用户信息表';  DROP TABLE IF EXISTS `visit_log`;  CREATE TABLE `visit_log` (    `id` varchar(36) character set utf8 NOT NULL,    `type` int(11) NOT NULL,    `content` text character set utf8 NOT NULL,    `createdate` date NOT NULL,    PRIMARY KEY  (`id`)  ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COMMENT='访问日志';   新建一个update_mysql.sh,内容如下:use chbdb;  source update.sql    然后执行如下命令:cat update_mysql.sh | mysql --user=root -ppassword  优点:支持复杂的sql脚本缺点:1> 需要两个文件:update.sql和update_mysql.sh2> 一旦中间出错,之后脚本就不会执行,例如:如果第一张表已经存在,则会报出如下异常:ERROR 1050 (42S01) at line 1 in file: 'update.sql': Table 'user' already exists然后脚本退出,第二张表也就无法创建。方案3    新建一个shell脚本,格式如下:#!/bin/bash  mysql -u* -h* -p*     Your SQL script.  EOF  例如:#!/bin/bash  mysql -uroot  -ppassword    use chbdb;     CREATE TABLE user (    id varchar(36) NOT NULL COMMENT '主键',    username varchar(50) NOT NULL COMMENT '用户名',    password varchar(50) NOT NULL COMMENT '用户密码',    createdate date NOT NULL COMMENT '创建时间',    age int(11) NOT NULL COMMENT '年龄',    PRIMARY KEY  (`id`)  ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='用户信息表';  优点:1>支持复杂的sql脚本2>无需其它额外文件缺点:1> 表名、字段不能使用单引号,需要修改原有sql语句2> 一旦中间出错,之后脚本就不会执行,例如:如果第一张表已经存在,则会报出如下异常:ERROR 1050 (42S01) at line 1 in file: 'update.sql': Table 'user' already exists然后脚本退出,第二张表也就无法创建。方案4准备一个sql脚本,如update.sql,然后执行如下命令:mysql -uroot -ppassword 优点:支持复杂的sql脚本缺点:1> 一旦中间出错,之后脚本就不会执行,例如:如果第一张表已经存在,则会报出如下异常:ERROR 1050 (42S01) at line 1 in file: 'update.sql': Table 'user' already exists然后脚本退出,第二张表也就无法创建。  大家知道在mysql命令行中使用source命令,即使中间出错,后续脚本也会继续执行,但是如上几种方式,均无法解决该问题,如果大家有好的建议,请回复,谢谢。       在shell开发中,很多时候我们需要操作mysql数据库(比如:查询数据、导出数据等),但是我们又无法进入mysql命令行的环境,就需要在 shell环境中模拟mysql的环境,使用mysql相关命令,本文总结几种shell操作mysql的方法,供大家参考。方案1mysql -uuser -ppasswd -e"insert LogTable values(...)"  优点:语句简单缺点:支持的sql相对简单 方案2准备一个sql脚本,名字为update.sql,例如:CREATE TABLE `user` (    `id` varchar(36) NOT NULL COMMENT '主键',    `username` varchar(50) NOT NULL COMMENT '用户名',    `password` varchar(50) NOT NULL COMMENT '用户密码',    `createdate` date NOT NULL COMMENT '创建时间',    `age` int(11) NOT NULL COMMENT '年龄',    PRIMARY KEY  (`id`)  ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='用户信息表';  DROP TABLE IF EXISTS `visit_log`;  CREATE TABLE `visit_log` (    `id` varchar(36) character set utf8 NOT NULL,    `type` int(11) NOT NULL,    `content` text character set utf8 NOT NULL,    `createdate` date NOT NULL,    PRIMARY KEY  (`id`)  ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COMMENT='访问日志';   新建一个update_mysql.sh,内容如下:use chbdb;  source update.sql    然后执行如下命令:cat update_mysql.sh | mysql --user=root -ppassword  优点:支持复杂的sql脚本缺点:1> 需要两个文件:update.sql和update_mysql.sh2> 一旦中间出错,之后脚本就不会执行,例如:如果第一张表已经存在,则会报出如下异常:ERROR 1050 (42S01) at line 1 in file: 'update.sql': Table 'user' already exists然后脚本退出,第二张表也就无法创建。方案3    新建一个shell脚本,格式如下:#!/bin/bash  mysql -u* -h* -p*     Your SQL script.  EOF  例如:#!/bin/bash  mysql -uroot  -ppassword    use chbdb;     CREATE TABLE user (    id varchar(36) NOT NULL COMMENT '主键',    username varchar(50) NOT NULL COMMENT '用户名',    password varchar(50) NOT NULL COMMENT '用户密码',    createdate date NOT NULL COMMENT '创建时间',    age int(11) NOT NULL COMMENT '年龄',    PRIMARY KEY  (`id`)  ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='用户信息表';  优点:1>支持复杂的sql脚本2>无需其它额外文件缺点:1> 表名、字段不能使用单引号,需要修改原有sql语句2> 一旦中间出错,之后脚本就不会执行,例如:如果第一张表已经存在,则会报出如下异常:ERROR 1050 (42S01) at line 1 in file: 'update.sql': Table 'user' already exists然后脚本退出,第二张表也就无法创建。方案4准备一个sql脚本,如update.sql,然后执行如下命令:mysql -uroot -ppassword 优点:支持复杂的sql脚本缺点:1> 一旦中间出错,之后脚本就不会执行,例如:如果第一张表已经存在,则会报出如下异常:ERROR 1050 (42S01) at line 1 in file: 'update.sql': Table 'user' already exists然后脚本退出,第二张表也就无法创建。  大家知道在mysql命令行中使用source命令,即使中间出错,后续脚本也会继续执行,但是如上几种方式,均无法解决该问题,如果大家有好的建议,请回复,谢谢。大家好:    我是一位shell菜鸟,问各位一个问题,还望各位多指教!    请问如何将一个sql查询语句的某一列值赋给一个shell变量,麻烦各位给出详细代码参考下。  在线等,谢谢!对我有用[0]丢个板砖[0]引用举报管理TOP 回复次数:2shihezichen(编程量子)等 级:#1楼 得分:20回复于:2008-10-31 23:27:03你可以把sql执行结果先存入到临时文件中,然后再从中间取出你所需的那一行,赋给shell变量.假设sql执行结果存入已存入文件/tmp/sql_out.txt, 要取其中的第 51 行, 以ksh为例如下:Python codeout_f="/tmp/sql_out.txt"line_count=51line=""# get the line 51 and assigned it to $lineline=`sed -n "${line_count}p" ${out_f}`# show the line echo ${line}[shell] SHELL怎样像游标一样对SQL查询结果集进行循环? [复制链接]Rawu临时会员该用户从未签到阅读权限10 积分0 主题15 帖子54 日志0 楼主 发表于 2005-5-26 18:34 |只看该作者 |倒序浏览 |打印SHELL怎样像游标一样对SQL查询结果集进行循环?比如 select A,B,C,count(1) AS D from table group by A,B,C结果是A B C D ----------1 5 Q 32 6 W 33 7 R 44 8 T 5现在如果想像游标一样一行一行的获取A,B,C,的值再用这些值组合成命令运行,知道所有行都处理完毕为止,那么 该怎么实现?我的做法是先把结果集定向到一个文件再用 while [ $# -gt 0] 作循环分别用a=`awk {print $1} file`b=`awk {print $2} file`c=`awk {print $3} file`获取每行的变量值但每个变量获取的却是整个列的值。哪位DX 指教一下收藏0 分享0 支持0 反对0回复 引用 举报 返回顶部dradhzn临时会员该用户从未签到阅读权限10 积分15 主题2 帖子491 日志0 沙发 发表于 2005-5-26 23:39 |只看该作者SHELL怎样像游标一样对SQL查询结果集进行循环?#!/bin/shwhile read line doset $line echo $1 $2 $3 $4echo =do sth here===echo =done, next line=echo done 回复 引用 举报 返回顶部随风漂临时会员该用户从未签到阅读权限10 积分0 主题20 帖子455 日志0 板凳 发表于 2005-5-27 08:56 |只看该作者SHELL怎样像游标一样对SQL查询结果集进行循环?可是用使用awk和sh来完成,举例说明:awk '{print "yourcode",$1,$2}' filename|sh回复 引用 举报 返回顶部ldchope一星会员该用户从未签到阅读权限25 积分222 主题22 帖子132 日志0 4楼 发表于 2005-5-27 14:07 |只看该作者SHELL怎样像游标一样对SQL查询结果集进行循环?#!/bin/shn=1# export n  m=`awk 'END {print NR }' readme`echo $m, $nwhile [ $n -le $m ]doline=`awk  '{ if ( NR == '"$n"' ) print}' readme`a=`echo $line|awk '{print $1}'`b=`echo $line|awk '{print $2}'`c=`echo $line|awk '{print $3}'`d=`echo $line|awk '{print $4}'`echo "$a,$b,$c,$d" n=`expr  $n + 1 `  sleep 5done前一阵子写的,你应该用的上回复 引用 举报 返回顶部Rawu临时会员该用户从未签到阅读权限10 积分0 主题15 帖子54 日志0 5楼 发表于 2005-5-29 02:11 |只看该作者SHELL怎样像游标一样对SQL查询结果集进行循环?谢谢 各位 ,我先试试。check_db.shsqlplus test/test@testDBSELECT tablespace_name 表空间,sum(blocks*8192/1000000) 剩余空间 FROM dba_free_space GROUP BY tablespace_name;exit!怎么在check_db.sh中取到 表空间和 剩余空间 的值? 然后放在某个变量中HP StoreOnce重复数据删除白皮书下载| 2010您最想感谢的CUer是谁?敬请提名! | 红帽RHCE超低价考试| 有奖:数据保护什么备份软件好silverdust圣骑士  帖子128 主题13 精华0 可用积分128  专家积分0 (本版:0)来自北京西城 在线时间14 小时 注册时间2002-08-08 最后登录2010-12-20 状态:...当前离线...[微博] [博客] [短信] 2楼 发表于 2006-05-29 17:06 | 只看该作者把查询结果unload到文件里,然后cat文件,用awk取不同域的值赋给变量__________________________________鹤舞白沙,我心飞翔!HP StoreOnce重复数据删除白皮书下载| 2010您最想感谢的CUer是谁?敬请提名! | 红帽RHCE超低价考试| 有奖:数据保护什么备份软件好西门子风云使者  帖子457 主题84 精华1 可用积分468  专家积分0 (本版:0)在线时间7 小时 注册时间2005-03-02 最后登录2010-12-09 状态:...当前离线...[微博] [博客] [短信] 3楼 发表于 2006-05-29 17:07 | 只看该作者var=$(sql command)echo $var__________________________________什么是 Windows 能干而 Linux 干不了的事情?----Windows 能干而 Linux 干不了的事情,那就是不需要干的事情。HP StoreOnce重复数据删除白皮书下载| 2010您最想感谢的CUer是谁?敬请提名! | 红帽RHCE超低价考试| 有奖:数据保护什么备份软件好fjfd圣骑士  帖子105 主题17 精华0 可用积分115  专家积分0 (本版:0)在线时间36 小时 注册时间2004-07-23 最后登录2010-06-26 状态:...当前离线...[微博] [博客] [短信] 4楼 发表于 2006-05-29 19:23 | 只看该作者QUOTE:原帖由 西门子 于 2006-5-29 17:07 发表var=$(sql command)echo $var好象是行不通的哦可否用SHELL实现对SQL进行查询,修改,删除等等呢来源:linux宝库作者:linux宝库 发布时间:2007-09-30 08:00:00域名注册域名惊喜价格 cn域名1元注册com域名39.9元虚拟主机主机按月支付,低至19元/月超大流量,可开子站点VPS主机特惠VPS168元/月,4-8M独享带宽保证独立操作系统,无限开站点  #!/usr/bin/ksh  SQL_EXEC()  {  sqlplus $USER/$PASSWD@$DB  set linesize 1024  set pagesize 1024  $SQLCOMM  quit  !  }  #select  SQLCOMM="select ’xxx’,username from all_users;"  SQL_EXEC | grep xxx  #insert ,delete 省略  用的INformIX哟提示未找到sql_exec怎么办。  我想这样应该能,  #vi query.sh  sqlplus $USER/$PASSWD   select …… from …………  insert………………  delete………………  EOF  :wq  #query.sh  isql  database dbname;  select * from tbname where fieldname="xxxxx";  delete from tbname;  .....  close database;  !可否用SHELL实现对SQL进行查询,修改,删除等等呢创建:2005-10-26 00:49:46作者:Unlinux来自: http://www.Unlinux.com#!/usr/bin/kshSQL_EXEC(){sqlplus $USER/$PASSWD@$DBset linesize 1024set pagesize 1024$SQLCOMMquit!}#selectSQLCOMM="select 'xxx',username from all_users;"SQL_EXEC | grep xxx#insert ,delete 省略用的INformIX哟提示找不到sql_exec怎么办。我想这样应该可以,#vi query.shsqlplus $USER/$PASSWD select …… from …………insert………………delete………………EOF:wq#query.sh isqldatabase dbname;select * from tbname where fieldname="xxxxx";delete from tbname;.....close database;!转载自:http://www.把SQL查询结果赋给shell变量时间:2010-10-13 01:09 来源:www.stuhack.com 作者: 点击:85次最近在看《基于Linux的Oracle数据库管理》这本书,根据书上的示例写的shell脚本, #!/bin/bash VALUE=`sqlplus -silent /nolog END conn scott/tiger set pagesize 0 feedback off verify off heading off echo off numwidth 4 select count( * ) coun from  最近在看《基于Linux的Oracle数据库管理》这本书,根据书上的示例写的shell脚本,  #!/bin/bash  VALUE=`sqlplus -silent /nolog   conn scott/tiger  set pagesize 0 feedback off verify off heading off echo off numwidth 4  select count( * ) coun from all_objects;  exit;  END`  if [ "$VALUE" -gt 0 ]  then  echo "The number of rows is $VALUE."  exit 0  else  echo "There is no row in the table."  fi  在执行时总报错误:  ./sqlshell.sh: line 9: [: ####: integer expression expected  书上写的应该没错,查找原因,看了一上我机器上的查询结果是:40620  应该是显示的位宽不够,所以"$VALUE"值变成了一个错误的值。  把numwidth 4 改成为 numwidth 5  就能正确执行了。想写个shell脚本,获取到SQL中查询到的字段的值enabledate,赋值给shell脚本中定义的变量,然后再写入文件du.txt中. 我已经写了如下代码: isql database checkid; select enabledate from cachet where accno = '900116004'; ! echo $@ > du.txt 接下来就不会写了,求大家帮帮忙啊!问题补充:能不能写详细点,谢谢啦我是这样写的,你看对不对isql database checkid;select enabledate from cachet where accno ='900116004';!while read enabledatedoaa=$enabledate;doneecho "$aa";最佳答案while read enabledate    do      __aa=$enabledate;        doneecho "$__aa";============================我用shell调用   一个sql   文件,这个sql文件里面的查询豫剧返回一个结果集  我如何把这个结果集返回给shell悬赏金额: N币 20悬赏的问题解决办法TOPtueensctueensc组别新进职员性别保密积分80帖子10984注册时间 2010-01-12 2009-01-23 00:32 |只看该用户 2# 字体大小:ri。。也不说是什么数据库。 如果书sybase可以有两个方式: isql -S.. -U.. -P.. select * from .. go exit EOF 或者再shell执行像下面语句,然后通过管道送到其它程序或者重定向到文件: isql  -S.. -U.. -P.. -i跟上sql文件名   如果书oracle或mysql,至少第一种方法是可以的。TOPjavacctojavaccto组别新进职员性别保密积分80帖子11607注册时间 2010-01-12 2009-01-23 14:29 |只看该用户 3# 字体大小:楼上正解TOPcotomencotomen组别新进职员性别保密积分80帖子12847注册时间 2010-01-12 2010-01-16 11:01 |只看该用户 4# 字体大小:Execute_SQL() { isql -Uuser -Ppasswrok -Sserverid   ${SQL} go exit go ! }     SQL=`echo "select convert(varchar(20),dateadd(day,-1,getdate()),112) ,'aaa' "` Execute_SQL |grep aaa |read yestoday aaapython的base64编码图片Python 2010-06-26 12:07:36 阅读162 评论0   字号:大中小 订阅很多年以前,曾经保存过一个页面,但发现图片并没有以文件的形式保存下来,打开页面时图片却有显示,开始以为是js玩的花招(因为里面一大堆js跳来跳去),链接到了其它地方,调查后发现源代码里有一大段看不懂的编码,虽然估计这段代码就是图片,受限于当时的视野,百思不得其解~ 现在终于明白了!测试例子,把文字转成base64编码>>> import base64>>> ls_s='字符串文本'>>> ls_t=base64.b64encode(ls_s) #转换文本内容到base64>>> print ls_t19a3+7SuzsSxvg==>>> print base64.b64decode(ls_t) #解码字符串文本>>>把图片内容转成base64编码import base64f=open(r'x:\1.jpg','rb') #二进制方式打开图文件ls_f=base64.b64encode(f.read()) #读取文件内容,转换为base64编码 f.close()把编码文本写入一个txt文件fw=open(r'x:\1.txt','w') #打开一个空白文本文件,准备写入fw.write(ls_f)fw.flush()fw.close()网页的表达注意 image/jpeg 如果图片是其它类型的,这里也要修改; image/png、image/gif、image/bmp 等data: URI定义于IETF标准的RFC 2397 data: URI的基本使用格式如下: data:[][;base64|charset=some_charset], 最后做个实例,把这段保存为htm文件,用浏览器打开看看是不是一个图,src="data:image/bmp;base64,Qk0eAgAAAAAAALYAAAAoAAAAEgAAABIAAAABAAgAAAAAAAAAAA DEDgAAxA4AACAAAAAgAAAAFSph/ySn4f8jRGP/mt70/zg1M/9DqMr/YWJg/yZqtf8EAwP/Xouz/5O qpP81Vn7/O4ut/xQqQP8TUJL/TmaU/y9ylv8nWKH/g3Z1/x3d9v+JvNj/LCYk/yQcGf8Nb7T/HUKV /w0bJ/8XW7L/YNT7/7b1/P+Niof/I43F/////wAfFhYVFhUWFhYVFRUVFhUWFR8AABYCBwcYARgJC wQNDQICDQ0NBAAABAIaEQcHCwsNDQICBA0NDQIEAAAEAgcHHg4CCw4eFAIPAg0NAgQAAAQLBwceDg sQEQMJHh4GDQ0CBAAAFQsaGgcRDwULCw8UCQ0CDQsEAAAEAAcREQ4LCQEXDgAAAQIZEAQAABUCGAc RGAAJAxsbDAsKAhkQBAAAFQwYGAcHAAMDAxQUFAodDQIVAAAWHgEYGB4YAwMDHBwDCgYNDRUAABUQ AQEYBx4RFBQCFA8CBAACFQAABAgeAR4RAREZAAAJFA4ADQsVAAAECBkBAR4FHhEFHBwUCgoCAhUAA BUICB4eHgEHHBwcHAMUCgICFQAAFQgIDQEeEwEPAwMUCQkAAgwWAAACCAgIAQETExoAGhcXHg4TGR UAABUGFggZDAUFBQwMEBAMBQ8EBgAAHwQKEhISEhISEhIdEhISHRIfAAA=" />可在Chrome、firefox、Opera、ie8里使用这里杯具来了,经测试居然不能在ie6中使用,可印象中那个应该是ie一族的,可能是ie5查下资料,ie8也是有限支持32K以内,ie6/ie7不支持,而ie5居然是率先开始支持的(因为效率安全问题在ie6被弃用了)。有点美中不足啊~  Python中进行Base64编码和解码 收藏Base64编码是一种“防君子不防小人”的编码方式。广泛应用于MIME协议,作为电子邮件的传输编码,生成的编码可逆,后一两位可能有“=”,生成的编码都是ascii字符。优点:速度快,ascii字符,肉眼不可理解缺点:编码比较长,非常容易被破解,仅适用于加密非关键信息的场合Python中进行Base64编码和解码>>> import base64>>> s = '我是字符串'>>> a = base64.b64encode(s)>>> print aztLKx9fWt/u0rg==>>> print base64.b64decode(a)我是字符串
12-30 02:00