本文介绍 MySQL 80 shell 子模块 Util 的两个导入特性 importTable/import_table(JS和python 版本的命名差异)、importJson/import_json的使用方法。
其中 import_table 是通过传统 MySQL 协议来通信,Import_json 是通过 X 插件协议来通信。MySQL 一直以来提供导入文件 SQL 命令 load data infile(单线程)以及对应的可执行文件 mysqlimport(多线程)。
比如我导入 100W 行示例数据到表 ytttl1,花了 24 秒。这个已经是 MySQL 默认导入来的最快的。分析那我们现在看下 mysqlimport 工具的升级版,mysqlshell 的 util 工具集。
使用这两个工具之前,必须得临时开启 local_infile 选项。1 import_table建立 3306 端口的新连接我这里切换为 python 模式清空掉示例表 Ytttl1import_table 有两个参数,第一个参数定义导入文件的路径,第二个定义相关选项,比如导入的格式,并发的数量等。定义文件路径(参数1)定义选项(参数2)执行导入:只花了不到 17 秒,比传统 mysqlimport 快了不少。
我们上面指定了显式指定了字段分隔符,那有没有已经定义好的组合格式呢? 答案是有的,选项 dialect 可以指定以下格式:csv,tsv,json,csv-unix那么上面的导入,我们可以更简单,改下变量 y_options1 的定义导入时间差不多。这里要说明下,dialect 选项的优先级比较低,比如添加了'linesTerminatedBy':'\r\n', 则覆盖他自己的'\n'。
选项 diaelect 还有一个可选值为 json,可以直接把 json 结果导入到文档表里。比如我新建一张表 tl1_json重新定义文件以及导入选项。导入 JSON 数据速度也还可以,不到 24 秒。那导入 json 数据,就必须得提到以 X 插件协议通信的工具 import_json了。2 imort_json我们切换到 mysqlx 端口import_json 参数和 Import_table 参数类似,这里我改下选项我在手册上没有看到多线程的选项,所以单线程跑 35 秒慢了些。查看刚刚导入的数据import_json 不仅仅可以导入 Json 数据,更重要的是可以在 BSON 和 JSON 之间平滑的转换,有兴趣的同学可以去 TRY 下。
empno=100不存在的,改成有的数据了。
#!/bin/bash
result=$(sqlplus -s 'scott/tiger@dbname'<<EOF
spool testtxt
set pages 0
set feed off
set heading off;
set feedback off;
set verify off;
set linesize 1000;
SELECT FROM scottemp where empno=7369;
spool off
EOF
)
echo $result
~
~
~
~
~
~
~
~
~
"testsh" 14L, 256C written
oracle@:~> /testsh
7369 SMITH CLERK 7902 17-DEC-80 224006 20
oracle@:~> more testtxt
7369 SMITH CLERK 7902 17-DEC-80 224006
20
参考如下:
sqlplus -s sys/change_on_install >>/export/home/oracle/querylog <<!
select count() from V$sysstat;
exit;
!
在简单介绍shell脚本(shell script)之前,先简单介绍一下shell。
在计算机科学中, shell (壳层)指“为用户提供用户界面”的软件,通常指的是命令行界面的解析器。一般来说,这个词是指 *** 作系统中,提供访问内核所提供之服务的程序。Shell也用于泛指所有为用户提供 *** 作界面的程序,也就是程序和用户交互的接口。因此与之相对的是程序内核(英语:Kernel),内核不提供和用户的交互功能。
不过这个词也拿来指应用软件,或是任何在特定组件外围的软件,例如浏览器或电子邮件软件是HTML排版引擎的shell。Shell这个词是来自于 *** 作系统(内核)与用户界面的外层界面。
通常将shell分为两类:命令行与图形界面。命令行壳层提供一个命令行界面(CLI);而图形壳层提供一个图形用户界面(GUI)。
shell脚本 (英语:shell script),又称shell命令稿、程序化脚本,是一种电脑程序与文本文件,内容由一连串的shell命令组成,经由Unix Shell直译其内容后运作。被当成是一种脚本语言来设计,其运作方式与解释型语言相当,由Unix shell扮演命令行解释器的角色,在读取shell脚本之后,依序运行其中的shell命令,之后输出结果。利用shell脚本可以进行系统管理,文件 *** 作等。
在Unix及所有的类Unix系统中,如Linux、FreeBSD等 *** 作系统,都存在shell脚本。依照Unix shell的各种不同类型,shell脚本也有各种不同方言,如 Bourne shell (sh), Bourne-Again shell (bash), C shell (csh)等等。在DOS、OS/2、Microsoft Windows中的批处理文件,跟shell脚本有类似的功能。
常见的shell脚本循环语法包括for、while和until。除此之外,还有一些其他语法,能够实现循环(遍历)功能。和循环相关的还有循环控制符break和continue,用于控制流程转向。
for循环属于“当型循环”,即“当满足条件的时候执行”。
for循环有三种类型:
常见的数值for循环语法还有:
for file in $( ls )语法的等效语法有很多,如下:
或者
类C风格的for循环,和C没有太大的区别,这里只进行示例,不再赘述。
或者
结果:
也称为前测试循环语句,重复次数是利用一个条件来控制是否继续重复执行这个语句。为了避免死循环,必须保证循环体中包含循环出口条件即表达式存在退出状态为非0的情况。例如,计算1~100以内所有的奇数之和:
当然,条件可以使字符串,可以是输入值,可以是标记等,此处不再赘述。
until命令和while命令类似,while能实现的功能until也可以实现。但区别是until循环的退出状态是为0(与while刚好相反),即whie循环在条件为真时继续执行循环,而until则在条件为假时执行循环。
例如,计算1~100以内所有的奇数之和:
select结构从技术角度看不能算是循环结构,只是相似而已,它是bash的扩展结构用于交互式菜单显示,功能类似于case结构,但是比case的交互性要好。在遍历列表功能中,select结构可以实现循环的功能。
例如,以下选择,只有选择white的时候,退出循环
在循环语法中,经常需要根据条件控制循环退出或跳过本次执行,这时候就需要用到循环控制符。循环控制符主要包括两个:break和continue。
循环控制符和C以及Java等常见语法功能类似,在理不再赘述,只给出常用示例。
在for、while和until循环中break可强行退出循环。
注意 :break语句仅能退出当前的循环,如果是两层循环嵌套,则需要在外层循环中使用break。
例如,计算1~100以内所有的奇数之和:
在for、while和until中用于让脚本跳过其后面的语句,执行下一次循环。
例如,显示10以内能被3整除的正整数。
以上是自己在学习Linux的过程中的一部分总结,和大家共享。同时,也参考了其他人的博客,在参考列表中列出来了。
应用spool命令,大量数据汇出很方便,脚本内容大致如下:
--============================================
#!/bin/sh
#第一步
sqlplus -s 用户名/密码@服务名<<EOF
spool customerssql --输出文件路径及名称
set trimspool on
set linesize 8000
set pagesize 50000
set newpage 1
set heading off
set term off
set feedback off
set sqlblankline off
SELECT A || '|+|' || --字段A
B || '|+|' || --字段B
C || '|+|' || --字段C
D || '|+|' || --字段D
E || '|+|' || --字段E
F || '|+|' || --字段F
G || '|+|' || --字段G
TO_CHAR(H,'YYYYMMDD HH:MM:SS') || '|+|' --字段H,可以使用函数
FROM CUSTOMERS;--表名
spool off
exit
EOF
--=======================
其中'|+|'为分隔符,也可以换成你说的逗号,即','。调用该脚本后,在根目录下生成customerssql文件。
以上就是关于shell执行mysql语句后怎么得到得到返回的结果全部的内容,包括:shell执行mysql语句后怎么得到得到返回的结果、linux下编写以个shell脚本,实现对oracle数据库抽取指定条件的数据并且保存在一个文本文件中。、我想在shell中写个脚本实现查询oracle一个表中的数据,并把查询到的数据保存到文件中,怎么做等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)