PowerShell免费软件

当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 --result-file=a:\xxx\yyy.sql -B 库名 
--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 码农是干嘛的?

程序员(码农)是虚拟世界的创世神,符合逻辑的要长处来,不符合逻辑的应砍掉。虚拟世界的规则是创世神规定的,
虚拟世界中,路人甲砍路人乙一刀,乙是掉脑袋,还是额外长出个脑袋,应该被创世神来规定。样虚拟世界才能茁壮成长。
当然不能胡乱规定,否则虚拟世界将坍塌。
如何定义规则,是费脑筋的。否则要架构师干嘛?当然细节码农也要参与。


如果你是一只猴子,我要抢走你【<】,【>】,【>>】牌香蕉,你会很不满意的大吼么?
到底要不要夺走猴子的这只香蕉???


------------------【完】------------------

 

posted on   PowerShell免费软件  阅读(4112)  评论(7编辑  收藏  举报

编辑推荐:
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· 展开说说关于C#中ORM框架的用法!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

导航

统计

点击右上角即可分享
微信分享提示