用 PowerShell 玩转 SQLite 数据库 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Tumblr
V2EX    PowerShell

用 PowerShell 玩转 SQLite 数据库

  •  
  •   Tumblr 2019-06-04 13:24:07 +08:00 5812 次点击
    这是一个创建于 2389 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    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 是通过参数传入的。

    好了,有空再继续分享。

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

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

    不知道可不可以把高版本的 ps 运行环境打包后像绿色软件一样到处运行,这确实是刚需之一。
    fengyj
        10
    fengyj  
       2019-06-04 20:12:16 +08:00 via Android
    @Tumblr #8
    同意。没事就扯意义,没用过就说没意义。PowerShell 有那么差?学习成本也不止于那么高啊,至少我 PowerShell 学的就是抽了一点时间学而已。
    fengyj
        11
    fengyj  
       2019-06-04 20:13:43 +08:00 via Android   1
    @Osk #9
    升级成 PowerShell core 6
    装个.net 框架 4.0+就可以运行了。我的 win server 2012 就是这样,然后使用 scoop 管理软件。
    Tumblr
        12
    Tumblr  
    OP
       2019-06-04 22:19:32 +08:00
    @huiyifyj #11 PowerShell 6 倒是个不错的选择,因为这个不依赖于 OS,是独立运行的。
    在 PowerShell 6 之前,即使装 WMF 升级到 5.1,还是有很多命令的模块是没有的。
    Cooky
        13
    Cooky  
       2019-06-05 00:31:56 +08:00 via Android
    @Tumblr 了解是不可能了解的,这辈子都不可能了解的。抽时间又不会抽,就是偷懒这种东西,才能维持了生活这样子。
    zhuangzhuang1988
        14
    zhuangzhuang1988  
       2019-06-05 01:01:42 +08:00
    结构化的 Shell 比一堆 linux 的面向字符的好多了,
    而且还可以调试
    hakono
        15
    hakono  
       2019-06-05 01:06:40 +08:00
    一直以来拒绝学 PowerShell 的一个原因是…………感觉 PowerShell 代码实在看着太丑了…………
    一种看了让人本能拒绝的那种丑…………
    然后 linux 的 bash 的则是另一种方面的丑…………
    lynskylate
        16
    lynskylate  
       2019-06-05 02:04:06 +08:00 via Android
    受不了 ps 的最重要原因是太慢,第一次打开要 2-3s,以至于很多时候我宁可用 cmd,毕竟大部分我用命令行只是调一些命令。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5183 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 28ms UTC 07:08 PVG 15:08 LAX 23:08 JFK 02:08
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86