------------------【故事来由】------------------

起因:
群友问:把
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引发的血案的更多相关文章

  1. Replication的犄角旮旯(六)-- 一个DDL引发的血案(上)(如何近似估算DDL操作进度)

    <Replication的犄角旮旯>系列导读 Replication的犄角旮旯(一)--变更订阅端表名的应用场景 Replication的犄角旮旯(二)--寻找订阅端丢失的记录 Repli ...

  2. 一个无锁消息队列引发的血案(四)——月:RingQueue(上) 自旋锁

    目录 (一)起因 (二)混合自旋锁 (三)q3.h 与 RingBuffer (四)RingQueue(上) 自旋锁 (五)RingQueue(中) 休眠的艺术 (六)RingQueue(中) 休眠的 ...

  3. 简述C#中IO的应用 RabbitMQ安装笔记 一次线上问题引发的对于C#中相等判断的思考 ef和mysql使用(一) ASP.NET/MVC/Core的HTTP请求流程

    简述C#中IO的应用   在.NET Framework 中. System.IO 命名空间主要包含基于文件(和基于内存)的输入输出(I/O)服务的相关基础类库.和其他命名空间一样. System.I ...

  4. 事务隔离级别引发的"血案"

    事务引发的"血案"见的多了也麻木了,这回遇到个事务隔离级别的"案子",坑了我小半天的时间...也怪自己细节不牢.. 敲着代码遇到这么一个怪事情: class X ...

  5. [WCF]缺少一行代码引发的血案

    这是今天作项目支持的发现的一个关于WCF的问题,虽然最终我只是添加了一行代码就解决了这个问题,但是整个纠错过程是痛苦的,甚至最终发现这个问题都具有偶然性.具体来说,这是一个关于如何自动为服务接口(契约 ...

  6. dubbox微服务实例及引发的“血案”

    Dubbo 是阿里巴巴公司开源的一个高性能优秀的服务框架,使得应用可通过高性能的 RPC 实现服务的输出和输入功能,可以和 Spring框架无缝集成. 主要核心部件: Remoting: 网络通信框架 ...

  7. Replication的犄角旮旯(七)-- 一个DDL引发的血案(下)(聊聊logreader的延迟)

    <Replication的犄角旮旯>系列导读 Replication的犄角旮旯(一)--变更订阅端表名的应用场景 Replication的犄角旮旯(二)--寻找订阅端丢失的记录 Repli ...

  8. 转:一个Sqrt函数引发的血案

    转自:http://www.cnblogs.com/pkuoliver/archive/2010/10/06/1844725.html 源码下载地址:http://diducoder.com/sotr ...

  9. 一个Sqrt函数引发的血案(转)

    作者: 码农1946  来源: 博客园  发布时间: 2013-10-09 11:37  阅读: 4556 次  推荐: 41   原文链接   [收藏]   好吧,我承认我标题党了,不过既然你来了, ...

随机推荐

  1. Openstack命令行删除虚拟机硬件模板flavor

    openstack中,有一种概念叫flavor,其实flavor就是一种创建虚拟机的硬件尺寸模板化.比如我先创建一个flavor,该flavor包含的CPU数目,内存大小,硬盘大小都预先设置好,在创建 ...

  2. 解决Failed to allocate memory: 8转

    解决Failed to allocate memory: 8 昨天换了x64的Win7,发现在Eclipse上启动模拟器的时候存在问题,当设置的模拟器分辨率大于400×800的时候会出现 Failed ...

  3. IE8 下 select option 内容过长 , 展开时信息显示不全解决办法

    IE8 下 select option 内容过长 , 展开时信息显示不全 , 简单折衷的方式就是给 option 加上 title 属性 , 但是又不想一个个的修改,怎么办呢,代码如下 : //sel ...

  4. tomcat,Jboss,weblogic区别与比较

    一.tomcat Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,它是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心 ...

  5. pyenv ipython jupyter

    pyenv pyenv  依赖安装 yum -y install git gcc make patch zlib-devel gdbm-devel openssl-devel sqlite-devel ...

  6. JDBC读取新插入Oracle数据库Sequence值的5种方法

    Oracle的sequence实现非常灵活,所以也带来一些易用性问题,如何取到新插入记录生成的sequence值与其它数据库有较大差别,本文详国介绍了5种实现读取新插入记录sequence值的方法. ...

  7. Monkey 使用aapt查看apk包名

    使用aapt    //aapt是sdk自带的一个工具,在sdk\builds-tools\目录下1.以ES文件浏览器为例,命令行中切换到aapt.exe目录执行:aapt dump badging ...

  8. Openfire开发配置,Openfire源代码配置,OpenFire二次开发配置

    原文:http://www.cnblogs.com/lixiaolun/archive/2013/12/07/3462780.html 1.下载源代码:http://www.igniterealtim ...

  9. Postman 安装及使用入门教程

    安装 本文只是基于 Chrome 浏览器的扩展插件来进行的安装,并非单独应用程序. 首先,你要台电脑,其次,安装有 Chrome 浏览器,那你接着往下看吧. 1. 官网安装(别看) 打开官网,http ...

  10. HttpHelper类登录淘宝联盟并下载淘宝客订单xls

    本次开发环境与工具如下:IE9.0浏览器 + IE抓包插件HttpWatch +WIN7 64位系统 + VS2005 IDE + .NET 2.0框架本想上传HttpWatch抓包插件,但由于文件超 ...