V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Tumblr
V2EX  ›  PowerShell

用 PowerShell 玩转 SQLite 数据库

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

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

    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
    huiyifyj
        5
    huiyifyj  
       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 运行环境打包后像绿色软件一样到处运行,这确实是刚需之一。
    huiyifyj
        10
    huiyifyj  
       2019-06-04 20:12:16 +08:00 via Android
    @Tumblr #8
    同意。没事就扯意义,没用过就说没意义。PowerShell 有那么差?学习成本也不止于那么高啊,至少我 PowerShell 学的就是抽了一点时间学而已。
    huiyifyj
        11
    huiyifyj  
       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   ·   我们的愿景   ·   实用小工具   ·   2857 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 31ms · UTC 13:42 · PVG 21:42 · LAX 06:42 · JFK 09:42
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.