问:sqlite有个叫sqlite3.exe的客户端软件。我可以用这个sqlite.exe + cmd + bat 玩转sqlite数据库么?
答:
基本不行。
简单来说powershell有内置的值类型,如小数数值,和表datetable。而bat中没有。
powershell字符串对象长度大,bat数据超过8000左右字母不行。
------------------【例子】------------------
# 例子1 :专门给菜鸟编写的 PowerShell 操作Sqlite的例子。大量硬编码,快速上手。win10测试通过。
Import-Module pssqlite
$sqlite库文件名 = "a:pscodesqlitetest001.db" # 内存库用 ':MEMORY:'
$sqlite库名 = "" #默认main
$sqlite表名 = "biao001"
#region sql
#---
$建立_表_的sql语句 = ""
$建立_索引_的sql语句 = "CREATE INDEX IF NOT EXISTS $将要建立的索引名 ON $sqlite表名($将要建立索引的字段名)"
#powershell 传教士 原创例子 始作于 2016-01-01 元旦 允许转载,但必须保留名字和出处,否则追究法律责任
#---
$列出所有_库名_的sql语句 = 'PRAGMA database_list;'
$列出所有_表名_的sql语句 = "SELECT name FROM sqlite_master WHERE type='table' order by name;"
$列出某个_表结构_的sql语句 = "PRAGMA table_info($sqlite表名);"
$列出某个_表的所有索引_的sql语句 = "PRAGMA index_list($sqlite表名); "
#---
$测试_表是否存在_的sql语句 = "SELECT name FROM sqlite_master WHERE name='$sqlite表名' ; "
#---
$插入一条_数据数据_的sql语句 = ''
#---
$查询_表_的sql语句 = ''
#---
$清空_表_的sql语句 = "delete from $sqlite表名 ;"
#---
#endregion sql
# 前提1 库文件确实存在,有【$sqlite库文件名】。则建立连接。
# 前提2 库文件不存在,有【$sqlite库文件名】和【$建立_表的sql语句】。则建立连接,然后建立表。
# 前提3 有【$建立_表的sql语句】和【$sqlite库文件名 = ':MEMORY:'】字符串。则建立连接,然后建立表。
if ($sqlite库文件名 -eq ':MEMORY:')
{
Write-Verbose '新建【内存】sqlite库文件'
$我的Sqlite连接 = New-SQLiteConnection -DataSource $sqlite库文件名
Invoke-SqliteQuery -query $建立_表的sql语句 -DataSource $sqlite库文件名
}
else
{
if (test-path $sqlite库文件名)
{
Write-Verbose 'sqlite库文件已经存在'
$我的Sqlite连接 = New-SQLiteConnection -DataSource $sqlite库文件名
}
else
{
Write-Verbose '新建sqlite库文件'
$我的Sqlite连接 = New-SQLiteConnection -DataSource $sqlite库文件名
#新建表
$字段字串 = ""
$建立_表_的sql语句 =
@"
CREATE TABLE IF NOT EXISTS '$sqlite表名' ($字段字串)
"@
Invoke-SqliteQuery -query $建立_表_的sql语句 -DataSource $sqlite库文件名
}
}
# 列出库,列出表。前提【$我的Sqlite连接】已经建立。
Invoke-SqliteQuery -SQLiteConnection $我的Sqlite连接 -Query $列出所有_库名_的sql语句
Invoke-SqliteQuery -SQLiteConnection $我的Sqlite连接 -Query $列出所有_表名_的sql语句
# 建表索引。前提【$sqlite表名】,【$将要建立的索引名】,【$将要建立索引的字段名】已经赋值。
$将要建立的索引名 = 'yyy'
$将要建立索引的字段名 = 'bbb'
$建立_索引_的sql语句 = "CREATE INDEX IF NOT EXISTS $将要建立的索引名 ON $sqlite表名($将要建立索引的字段名)"
Invoke-SqliteQuery -SQLiteConnection $我的Sqlite连接 -Query $建立_索引_的sql语句
# 测表是否存在,查表结构,查表索引。前提【$sqlite表名】已经赋值。
Invoke-SqliteQuery -SQLiteConnection $我的Sqlite连接 -Query $测试_表是否存在_的sql语句 #返回表名
Invoke-SqliteQuery -SQLiteConnection $我的Sqlite连接 -Query $列出某个_表结构_的sql语句
Invoke-SqliteQuery -SQLiteConnection $我的Sqlite连接 -Query $列出某个_表的所有索引_的sql语句
$查询_表_的sql语句 = "select * from '$sqlite表名' ;"
$查询_表_的sql语句
Invoke-SqliteQuery -SQLiteConnection $我的Sqlite连接 -Query $查询_表_的sql语句
#插入数据
$字段1值 = 'null'
$字段2值 = '121215687'
$字段3值 = ''
$插入一条_数据数据_的sql语句 = "INSERT INTO $sqlite表名 VALUES($字段1值,$字段2值) ;" #本例表只有2个字段
Invoke-SqliteQuery -SQLiteConnection $我的Sqlite连接 -Query $插入一条_数据数据_的sql语句
#查询数据
$查询_表_的sql语句 = "select * from '$sqlite表名' ;"
$查询_表_的sql语句
Invoke-SqliteQuery -SQLiteConnection $我的Sqlite连接 -Query $查询_表_的sql语句
#清空
$清空_表_的sql语句 = "delete from $sqlite表名 ;"
Invoke-SqliteQuery -SQLiteConnection $我的Sqlite连接 -Query $清空_表_的sql语句
Invoke-SqliteQuery -SQLiteConnection $我的Sqlite连接 -Query $查询_表_的sql语句










