当powershell遇上mysql引发的血案
------------------【故事来由】------------------
起因:
群友问:把
cmd.exe /c a:\mysql5.6\bin\mysql.exe -uroot < a:\xxx\yyy.sql
替换成
powershell.exe /c a:\mysql5.6\bin\mysql.exe -uroot < a:\xxx\yyy.sql
就不行了。
经研究发现是由于powershell不支持【<】号导致的。
解决方法:
代替小于号的方法为,用source命令或用cmd。
start-process -FilePath 'a:\mysql5.6\bin\mysql.exe' -ArgumentList ' -uroot -e "source a:\xxx\yyy.sql"'
或
start-process -FilePath 'cmd.exe' -ArgumentList ' /c a:\mysql5.6\bin\mysql.exe -uroot < a:\xxx\yyy.sql'
代替大于号的方法是,用-r。详见mysql手册。
http://dev.mysql.com/doc/refman/5.7/en/mysqldump.html
mysqldump.exe -uroot -B -r 库名 a:\xxx\yyy.sql
--result-file=file_name, -r file_name
------------------【展开的讨论】------------------
问:mysqldump是什么?
答:
导出数据库,生成sql源码文本。
通过叫通 ip/端口/用户名/密码,来查询服务端口,得到字符串,处理字符串,然后写入文本。
这里要说明的是,实际上是一次产生n行,写入内存缓存,(受my.ini中,[mysqldump]字段中,max_allowed_packet = xxM参数控制)然后追
加入文件。并不是一行一追加。况且一行一追加,并没有意义。和二进制追加写入没区别。
问:mysql.exe < xxx.sql是什么?
答:
载入文本并提交给服务器端口。
命令行载入文本,都必须用【<】号了么?为什么Get-Content不用?
问:win,linux命令行中,程序通用的参数的写法,应该是什么?
答:
命令名 -参数名 参数值
命令名 --参数名 参数值
或
命令名 /参数名 参数值
powershell 传教士 原创文章 始作于 2016-02-19 允许转载,但必须保留名字和出处,否则追究法律责任
问:powershell中【<】取消了么?
答:
是
问:假设powershell中【>】取消了,那我用什么?
答:
用
out-file -InputObject $要输出的内容 -FilePath 文件名
https://technet.microsoft.com/en-us/library/hh849882.aspx
或用
Set-Content -Value $要输出的内容 -Path 文件名
https://technet.microsoft.com/en-us/library/hh849828.aspx
问:假设powershell中【>>】取消了,那我用什么?
答:
用
Add-Content -Value $要输出的内容 -Path 文件名
https://technet.microsoft.com/en-us/library/hh849859.aspx
注意:上述ps命令支持管道,支持单行,支持多行,支持换行和不换行。
------------------【其他数据库是如何做的?】------------------
让我们先看看,其他数据库的做法。
oracle:
E:\>exp system/oracle FILE=c.dmp FULL=Y
sqlserver + sqlcmd:
恢复
sqlcmd -S ./sqlexpress -i c:/createdata.sql
sqlserver + powershell:
在SQL Server 2012 中,微软增加了4个新的备份和还原的cmdlet
Backup-SqlDatabase
Restore-SqlDatabase
Backup-ASDatabase
Restore-ASDatabase
结论:
这些数据库软件的,导出sql命令,导入sql命令,都没有用到【<】,【>】,【>>】这些符号。
------------------【引发的思考】------------------
1 这应不应该算mysql客户端程序不合理的设计?bug?
2 应不应该给mysqldump.exe 添加 --outfile 之类的参数来代替【>】?
答:
已经有了,是-r参数。
3 应不应该给mysql.exe 添加 --runsqlfile 之类的参数来代替【<】?
既然上面的可以不用大于号,为什么这个命令没有,不用小于号的参数?
4 码农是干嘛的?
程序员(码农)是虚拟世界的创世神,符合逻辑的要长处来,不符合逻辑的应砍掉。虚拟世界的规则是创世神规定的,
虚拟世界中,路人甲砍路人乙一刀,乙是掉脑袋,还是额外长出个脑袋,应该被创世神来规定。样虚拟世界才能茁壮成长。
当然不能胡乱规定,否则虚拟世界将坍塌。
如何定义规则,是费脑筋的。否则要架构师干嘛?当然细节码农也要参与。
如果你是一只猴子,我要抢走你【<】,【>】,【>>】牌香蕉,你会很不满意的大吼么?
到底要不要夺走猴子的这只香蕉???
------------------【完】------------------
当powershell遇上mysql引发的血案的更多相关文章
- Replication的犄角旮旯(六)-- 一个DDL引发的血案(上)(如何近似估算DDL操作进度)
<Replication的犄角旮旯>系列导读 Replication的犄角旮旯(一)--变更订阅端表名的应用场景 Replication的犄角旮旯(二)--寻找订阅端丢失的记录 Repli ...
- 一个无锁消息队列引发的血案(四)——月:RingQueue(上) 自旋锁
目录 (一)起因 (二)混合自旋锁 (三)q3.h 与 RingBuffer (四)RingQueue(上) 自旋锁 (五)RingQueue(中) 休眠的艺术 (六)RingQueue(中) 休眠的 ...
- 简述C#中IO的应用 RabbitMQ安装笔记 一次线上问题引发的对于C#中相等判断的思考 ef和mysql使用(一) ASP.NET/MVC/Core的HTTP请求流程
简述C#中IO的应用 在.NET Framework 中. System.IO 命名空间主要包含基于文件(和基于内存)的输入输出(I/O)服务的相关基础类库.和其他命名空间一样. System.I ...
- 事务隔离级别引发的"血案"
事务引发的"血案"见的多了也麻木了,这回遇到个事务隔离级别的"案子",坑了我小半天的时间...也怪自己细节不牢.. 敲着代码遇到这么一个怪事情: class X ...
- [WCF]缺少一行代码引发的血案
这是今天作项目支持的发现的一个关于WCF的问题,虽然最终我只是添加了一行代码就解决了这个问题,但是整个纠错过程是痛苦的,甚至最终发现这个问题都具有偶然性.具体来说,这是一个关于如何自动为服务接口(契约 ...
- dubbox微服务实例及引发的“血案”
Dubbo 是阿里巴巴公司开源的一个高性能优秀的服务框架,使得应用可通过高性能的 RPC 实现服务的输出和输入功能,可以和 Spring框架无缝集成. 主要核心部件: Remoting: 网络通信框架 ...
- Replication的犄角旮旯(七)-- 一个DDL引发的血案(下)(聊聊logreader的延迟)
<Replication的犄角旮旯>系列导读 Replication的犄角旮旯(一)--变更订阅端表名的应用场景 Replication的犄角旮旯(二)--寻找订阅端丢失的记录 Repli ...
- 转:一个Sqrt函数引发的血案
转自:http://www.cnblogs.com/pkuoliver/archive/2010/10/06/1844725.html 源码下载地址:http://diducoder.com/sotr ...
- 一个Sqrt函数引发的血案(转)
作者: 码农1946 来源: 博客园 发布时间: 2013-10-09 11:37 阅读: 4556 次 推荐: 41 原文链接 [收藏] 好吧,我承认我标题党了,不过既然你来了, ...
随机推荐
- Ext学习
一.Ext对原有JavaScript对象的扩展 1.Ext.Array数组 2.Ext.Date日期 3.Ext.Function函数 4.Ext.Number数字 5.Ext.String字符串 二 ...
- android stutio 快捷键
[F] [F] F2 在错误代码之间切换 F3 往前定位(Shift + F3:往后定位 )有问题 F4\Ctrl+鼠标点击\Ctrl+B 转到定义,查看类继承关系 F5 但不调试进入函数内部. F6 ...
- Retrieve失败解决办法一例
错误:The service '/XRMServices/2011/OrganizationData.svc' cannot be activated due to an exception duri ...
- 【转】DQL、DML、DDL、DCL的概念与区别
转自 http://blog.csdn.net/tomatofly/article/details/5949070 SQL(Structure Query Language)语言是数据库的核心语言. ...
- datagridview随窗体的大小而变,表格填满控件
在C#winform布局的时候,我们拖一个datagridview到窗体上面,将datagridview调整为适合窗体的大小,但是我们运行之后,点击最大化按钮的时候,却发现datagridview的大 ...
- GMF:如何让网格显示在background,而不是foreground
前言 很久没写文章了,准备写一系列关于Eclipse RCP /Plugin的文章. 这些文章都是trouble shooting性质的,不准备写的很细,当你碰到这样的问题,google到时,能帮你把 ...
- [问题2014A06] 解答
[问题2014A06] 解答 用反证法, 设存在 \(n\) 阶正交阵 \(A,B\), 使得 \[A^2=cAB+B^2,\,\,c\neq 0.\cdots(1)\] 在 (1) 式两边同时左乘 ...
- MAC地址泛洪攻击测试
测试环境:kali系统(2个kali分别作攻击人和目标用户) win7系统(主机) 1.步配置FTP设置用户名密码 2.在攻击kali端测试网络的连通性 3.测试tpf是否正常 开始泛洪 4.开始抓包 ...
- android,NDK android.mk相关
1.c++ try...catch的支持 需要在Android.mk 中添加 LOCAL_CPPFLAGS += -fexceptions,或者在Application.mk中添加APP_CPPFLA ...
- EditText设置文字改变时的监听
textWatcher = new TextChangeWatcher(); etQuerryInfo.addTextChangedListener(textWatcher); /** * 文字改变类 ...