用 PowerShell 玩转 SQLite 数据库

2019-06-04 13:24:07 +08:00
 Tumblr

废话不多说,直接上步骤吧。

0. 先决条件

建议用 Windows 10 或 Windows Server 2016 及以上,PowerShell 5.0 或以上。
低版本的安装可以参考Microsoft Docs

1. 安装模块

1.1 安装 Nuget

Install-PackageProvider Nuget – Force

1.2 安装 PowerShellGet

Install-Module – Name PowerShellGet – Force

1.3 设置仓库信任

Set-PSRepository -Name PSGallery -InstallationPolicy Trusted

1.4 下载安装 PSSQLite 模块

Install-Module PSSQLite -Force

1.5 确认安装成功

PS > Get-Command -Module PSSQLite

CommandType     Name                                               Version    Source
-----------     ----                                               -------    ------
Function        Invoke-SQLiteBulkCopy                              1.0.3      PSSQLite
Function        Invoke-SqliteQuery                                 1.0.3      PSSQLite
Function        New-SQLiteConnection                               1.0.3      PSSQLite
Function        Out-DataTable                                      1.0.3      PSSQLite

2. 开始玩吧

2.1 创建数据库和表

$database = "D:\Scripts\DB\test.sqlite"
$query = "
        CREATED TABLE Names (
        fullname VARCHAR(20) PRIMARY KEY,
        surname TEXT,
        givenname TEXT,
        birthdate DATETIME
        )"
Invoke-SqliteQuery -Query $query -DataSource $database
Invoke-SqliteQuery -DataSource $database -Query "PRAGMA table_info(names)" | Format-Table
cid name      type        notnull dflt_value pk
--- ----      ----        ------- ---------- --
  0 fullname  varchar(20)       0             1
  1 surname   text              0             0
  2 givenname text              0             0
  3 birthdate datetime          0             0

2.2 插入一条数据并显示

$query = "INSERT INTO Names (fullname,surname,givenname,birthday)
                      VALUES (@full, 'Cookie', 'Monster', @bd)"
Invoke-SqliteQuery -DataSource $database -Query $query -SqlParameters @{full = "Cookie Monster"; BD = (Get-Date).AddYears(-11)}
Invoke-SqliteQuery -DataSource $database -Query 'select * from names'
fullname       surname givenname birthdate
--------       ------- --------- ---------
Cookie Monster Cookie  Monster   6/4/2008 10:00:25 AM

看,fullname 和 birthdate 是通过参数传入的。

好了,有空再继续分享。

5430 次点击
所在节点    PowerShell
16 条回复
lihongjie0209
2019-06-04 17:31:11 +08:00
还是没解决一个问题, 如果不是开箱自带,为什么不直接装 Python? 因为信仰吗
Tumblr
2019-06-04 17:37:21 +08:00
@lihongjie0209 #1 多掌握一门技能没坏处,尤其是对于负责微软系( AD、Exchange、Teams、SC 等等)运维的同学。
另外,Python 不是很多模块也需要安装才可以用么? Python 的强大正是因为周边的生态吧,抛开各种生态单独谈语言,Python 也谈不上翘楚的。
presoul
2019-06-04 18:16:32 +08:00
楼主说的没问题 ,至少 poweshell 在 win server 上很有用
lolizeppelin
2019-06-04 18:18:23 +08:00
学不动 2333
没事跳微软坑简直找死 233
huiyifyj
2019-06-04 18:22:29 +08:00
#1 1 楼 什么鬼评论...
PowerShell 至少在 win 下用的还是很有用,为什么就否定他的意义,而且它也的确比 cmd 和 bat 批处理更优秀。
不能因为对微软成见就鄙夷任何吧。而且最近的语言趋势确实是增加中啊。
Cooky
2019-06-04 18:37:08 +08:00
有那个功夫还不如学 C# …
Tumblr
2019-06-04 19:31:05 +08:00
@Cooky #6 一看就是没运维过 AD、Exchange 等系列产品的。
我想你应该了解一下微软的这一套(包括 System Center ) + Azure,再做评论。
Tumblr
2019-06-04 19:32:30 +08:00
感觉……怎么那么多人就是“我不了解你,你就不好,就要踩死你“的感觉呢。。。在说这个东西不好的时候,起码能说出个 123 来吧。。。难怪现在 V2EX 世风日下啊。
百度知道 -> 逼乎 -> V2EX ?
Osk
2019-06-04 20:03:11 +08:00
Powershell 在 Windows 上用来做运维确实好用。

但狗血的是 Windows 10 的 powershell 可以一行命令完成的功能,Win7 的 ps 有时没有对应的 cmdlet,升级 ps 是不可能升级的,然后只能换方案,然后干脆换语言了。

不知道可不可以把高版本的 ps 运行环境打包后像绿色软件一样到处运行,这确实是刚需之一。
huiyifyj
2019-06-04 20:12:16 +08:00
@Tumblr #8
同意。没事就扯意义,没用过就说没意义。PowerShell 有那么差?学习成本也不止于那么高啊,至少我 PowerShell 学的就是抽了一点时间学而已。
huiyifyj
2019-06-04 20:13:43 +08:00
@Osk #9
升级成 PowerShell core 6
装个.net 框架 4.0+就可以运行了。我的 win server 2012 就是这样,然后使用 scoop 管理软件。
Tumblr
2019-06-04 22:19:32 +08:00
@huiyifyj #11 PowerShell 6 倒是个不错的选择,因为这个不依赖于 OS,是独立运行的。
在 PowerShell 6 之前,即使装 WMF 升级到 5.1,还是有很多命令的模块是没有的。
Cooky
2019-06-05 00:31:56 +08:00
@Tumblr 了解是不可能了解的,这辈子都不可能了解的。抽时间又不会抽,就是偷懒这种东西,才能维持了生活这样子。
zhuangzhuang1988
2019-06-05 01:01:42 +08:00
结构化的 Shell 比一堆 linux 的面向字符的好多了,
而且还可以调试😄
hakono
2019-06-05 01:06:40 +08:00
一直以来拒绝学 PowerShell 的一个原因是…………感觉 PowerShell 代码实在看着太丑了…………
一种看了让人本能拒绝的那种丑…………
然后 linux 的 bash 的则是另一种方面的丑…………
lynskylate
2019-06-05 02:04:06 +08:00
受不了 ps 的最重要原因是太慢,第一次打开要 2-3s,以至于很多时候我宁可用 cmd,毕竟大部分我用命令行只是调一些命令。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/570716

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX