mis*_*das 7 windows csv sqlite import batch-file
我想询问是否还有将包含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
Run Code Online (Sandbox Code Playgroud)
正如你所看到的,我的第一个代码是转出所做的查询.
第二行代码我正在尝试创建一个新的数据库并尝试将csv文件导入表"test"
感谢您提前提供的任何帮助!:d
小智 9
通过 bash 导入文件的单文件命令对我有用:
sqlite3 inventory.sqlite.db << EOF
delete from audit;
.separator "\t"
.import audit-sorted-uniq.tsv audit
EOF
Run Code Online (Sandbox Code Playgroud)
希望有帮助。
我建议您从平面文件中导入,这将创建您的模式,然后是实际导入:
像这样:
sqlite3.exe test.sqlite < import.sql
Run Code Online (Sandbox Code Playgroud)
import.sql的内容是:
CREATE TABLE test (name varchar(255) not null, blah varchar(255) not null);
.separator ,
.import output.csv test
Run Code Online (Sandbox Code Playgroud)
您可能没有考虑过的另一种方法是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;"
Run Code Online (Sandbox Code Playgroud)
要么:
"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;"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
16308 次 |
| 最近记录: |