Powershell脚本(2)——用SQL查询表

wils
wils

创作者俱乐部成员

顺着昨天的ImportExcel说,这个模块除了常用的读写xlsx表,还提供了许多其他的实用功能,比如:

  • Convert-XlRangeToImage可以将Range导出为图片

  • Import-Html可以将网页的表格导入xlsx表

其中,还有几个用来读写SQL数据库的命令,比如:

  • Read-OleDbData从oledb读取表,

  • Send-SQLDataToExcel将SQL查询结果写入表

在这些命令的帮助里提到了另一个库Get-SQL,可以用命令Install-Module -Name GetSQL安装。

再啰嗦两句,在桌面上或文件夹里的空白处,按住Shift点击右键,可以在此处打开powershell窗口,一定注意,执行命令前确认当前路径是你要处理文件所在的目录,不要错误的处理了其他地方的文件,否则可就罪过了。。。


今天要介绍的就是这个命令,它可以非常方便的查询多种SQL数据库,并通过ImportExcel写入xlsx表。

比如查询xlsx表,只要用-Excel参数,再指定文件路径即可:

🔔

Get-SQL -Excel -Connection .\a.xlsx -SQL "select * from [Sheet1$]"

查询accdb也是一样,使用-Access参数,再指定路径即可

🔔

Get-SQL -Access -Connection .\b.accdb -SQL "select * from 表1"

类似的还有sqlite3和mssqlserver

🔔

Get-SQL -Lite -Connection .\c.db -SQL 'select * from table1'

如果需要将查询的结果写入xlsx表

这里需要注意,必须使用-outputvariable输出datatable类型的数据,而不能直接赋值,因为powershell赋值会自动展开datatable成数组,而send-sqldatatoexcel命令需要的是datatable类型

💡

$null = Get-SQL -Lite -Connection .\c.db -SQL 'select * from table1' -OutputVariable t1

Send-SQLDataToExcel -DataTable $t1 -Path c.xlsx

总之,利用Get-SQL命令,可以不用记住各种连接字符串,快速的试验你需要的sql查询,方便的将xlsx、accdb、sqlite3、sqlserver数据库的查询结果写入表。上面的例子只是最简单的演示,更具体更复杂的用法,可以用get-help get-sql -full命令查看帮助文件

一切都是为了偷懒😁

ps. 推荐了解一下这个帖子https://bbs.wps.cn/topic/12590,尤其是方伟大佬的回答,这解决了wps打开表之后,不能通过sql查询自己的问题,这同样适用于上面的powershell里的查询,上面的方法,也可以简单的看作,不用安装vba,快速试验sql查询excel的方法,本质上和在vba里写ado连接查询表没啥区别,只是可以偷懒🤣

广东省
浏览 254
1
7
分享
7 +1
1
1 +1
全部评论 1
 
柏安
牛人,学习了
· 福建省
回复