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

起因:
群友问:把
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. Spark实战4:异常检测算法Scala语言

    异常检测原理是根据训练数据的高斯分布,计算均值和方差,若测试数据样本点带入高斯公式计算的概率低于某个阈值(0.1),判定为异常点. 1 创建数据集转化工具类,把csv数据集转化为RDD数据结构 imp ...

  2. ajax获取其他网站接口信息

    MXS&Vincene  ─╄OvЁ  &0000023─╄OvЁ  MXS&Vincene MXS&Vincene  ─╄OvЁ:今天很残酷,明天更残酷,后天很美好, ...

  3. iOS性能优化:Instruments

    检测内存泄露:Instruments中的Leaks 前言 如果要检测内存泄露,我们会使用Xcode7自带的Instruments中的Leaks工具来检测. 现在的开发环境是ARC,所以很少会出现内存泄 ...

  4. php之XML转数组函数的方法

    <?/** * xml2array() will convert the given XML text to an array in the XML structure. * Link: htt ...

  5. Packets(模拟 POJ1017)

    Packets Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 47750 Accepted: 16182 Description ...

  6. src url href uri的区别和联系

  7. Bootstrap_按钮工具栏

    单个按钮在Web页面中的运用有时候并不能满足我们的业务需求,常常会看到将多个按钮组合在一起使用,比如富文本编辑器里的一组小图标按钮等. Bootstrap框架为大家提供了按钮组组件. <div ...

  8. 手把手教iOS生成.a包及常见的问题

    我的例子是打包MJRefresh 环境OS10.11.4,  XCode Version 7.3.1 (7D1014) 生成.a如下: 创建新工程: 把下载的 MJRefresh-master加到你的 ...

  9. Struts2之Action

    Struts2之Action MVC模式中需要有一个控制器来负责浏览器与服务器之间的通信,实现用户与服务器的交互.在Struts2框架中实现这一功能的是Action,它是整个框架最核心的部分.Acti ...

  10. 19.fastDFS集群理解+搭建笔记

    软件架构理解 1FastDFS介绍 1.1什么是FastDFS FastDFS是用c语言编写的一款开源的分布式文件系统.FastDFS为互联网量身定制,充分考虑了冗余备份.负载均衡.线性扩容等机制,并 ...