gpt4 book ai didi

windows - 在命令行或通过批处理文件将 CSV 文件导入 Sqlite3 数据库

转载 作者:IT王子 更新时间:2023-10-29 06:23:53 24 4
gpt4 key购买 nike

我想问一下是否有将包含我在 SQLite3 中的 select 语句输出的 csv 文件导入到新数据库中的方法?以下是我到目前为止所做的代码:

sqlite3.exe -csv logsql.sqlite "SELECT local_port AS port, COUNT(local_port) AS hitcount FROM connections  WHERE connection_type = 'accept' GROUP BY local_port ORDER BY hitcount DESC;" > output.csv
sqlite3.exe -csv test.sqlite "CREATE TABLE test (name varchar(255) not null, blah varchar(255) not null);" .import ./output.csv test

如您所见,我的第一个代码是转储所进行的查询。

第二行代码我正在尝试创建一个新数据库并尝试将 csv 文件导入到表“test”中

感谢您提前提供的任何帮助! :D

最佳答案

我建议您从一个平面文件进行导入,这将创建您的架构,然后进行实际导入:

像这样:

sqlite3.exe test.sqlite < import.sql

其中import.sql的内容是:

CREATE TABLE test (name varchar(255) not null, blah varchar(255) not null);
.separator ,
.import output.csv test

您可能没有考虑过的另一种方法是 ATTACH命令。您可以附加一个新数据库,在其中创建表,然后导入到它的表中,这样您就没有导出到 CSV 然后重新解析的额外步骤。它可以来自 CREATE TABLE ... AS SELECT ...查询或只是一个 INSERT。

基本上,您将运行(从您的 PHP 页面):

"ATTACH 'c:\directory\to\database\test.db' as TESTDB;"
"CREATE TABLE TESTDB.test AS SELECT local_port AS port, COUNT(local_port) AS hitcount FROM connections WHERE connection_type = 'accept' GROUP BY local_port ORDER BY hitcount DESC;"

或者:

"ATTACH 'c:\directory\to\database\test.db' as TESTDB;"
"CREATE TABLE TESTDB.test (name varchar(255) not null, blah varchar(255) not null);"
"IMPORT INTO TESTDB.test SELECT local_port AS port, COUNT(local_port) AS hitcount FROM connections WHERE connection_type = 'accept' GROUP BY local_port ORDER BY hitcount DESC;"

关于windows - 在命令行或通过批处理文件将 CSV 文件导入 Sqlite3 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6977497/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com