我想使用PowerShell脚本将CSV文件(用双引号分隔的逗号)导入SQLite。我尝试:
echo ".import export.csv mytable" | sqlite3.exe
我得到这个错误:导出.csv:327:未转义“字符我在所有行上都得到这个错误。在SQLite的命令行shell上,同样的命令可以工作:
sqlite > .import export.csv mytable
如何使用PowerShell脚本使此命令生效?
iswrvxsc1#
这对我在PowerShell 5.1和v7.0中都有效。
$params = @" .mode csv .separator , .import export.csv mytable "@ $params | .\sqlite3.exe mydatabase.db
lnxxn5zx2#
以下单个命令行在两种环境中都有效
cmd.exe
ver
powershell.exe
$PSVersionTable
.\sqlite3.exe my.db ".import file1.csv table1 --csv"
这会将csv文件file1.csv的内容加载到sqlite数据库文件my.db中的表table1中。--csv标志将导入该文件并根据该文件中的标题列名称创建表结构,并大致推断数据类型。您可以通过这种方式导入多个文件,例如
file1.csv
my.db
table1
--csv
.\sqlite3.exe my.db ".import file1.csv table1 --csv" ".import file2.csv table2 --csv"
您可以通过追加; .\sqlite3.exe my.db将命令链接在一起,以便立即打开数据库进行查询。也就是说
; .\sqlite3.exe my.db
.\sqlite3.exe my.db ".import file1.csv table1 --csv" ".import file2.csv table2 --csv; .\sqlite3.exe my.db"
z9smfwbn3#
那么sqlite3.exe“导入导出.csv mytable”又是怎么回事呢?您可以查看sqlite3.exe的文档,了解如何在不在其shell中使用sqlite3.exe,以及如何将参数传递给sqlite3.exe。您可以尝试以下行
Invoke-Expression 'sqlite3 yourdatabase.db < ".import export.csv mytable"'
3条答案
按热度按时间iswrvxsc1#
这对我在PowerShell 5.1和v7.0中都有效。
lnxxn5zx2#
以下单个命令行在两种环境中都有效
cmd.exe
(版本10.0.x.x通过ver
实现)和powershell.exe
(版本5.1.x.x通过$PSVersionTable
实现)这会将csv文件
file1.csv
的内容加载到sqlite数据库文件my.db
中的表table1
中。--csv
标志将导入该文件并根据该文件中的标题列名称创建表结构,并大致推断数据类型。您可以通过这种方式导入多个文件,例如
您可以通过追加
; .\sqlite3.exe my.db
将命令链接在一起,以便立即打开数据库进行查询。也就是说
z9smfwbn3#
那么sqlite3.exe“导入导出.csv mytable”又是怎么回事呢?
您可以查看sqlite3.exe的文档,了解如何在不在其shell中使用sqlite3.exe,以及如何将参数传递给sqlite3.exe。
您可以尝试以下行