hap*_*sad 116 database sqlite import sqlite-shell
我需要将.sql或.csv文件转储到SQLite中(我使用的是SQLite3 API).我只找到了导入/加载表的文档,而不是整个数据库.现在,当我输入:
sqlite3prompt> .import FILENAME TABLE
Run Code Online (Sandbox Code Playgroud)
我得到一个语法错误,因为它期望一个表而不是整个数据库.
Jay*_*gor 161
要从SQL文件导入,请使用以下命令:
sqlite> .read <filename>
Run Code Online (Sandbox Code Playgroud)
要从CSV文件导入,您需要指定文件类型和目标表:
sqlite> .mode csv <table>
sqlite> .import <filename> <table>
Run Code Online (Sandbox Code Playgroud)
Kyl*_*nin 26
尝试从命令执行此操作,如:
cat dump.sql | sqlite3 database.db
Run Code Online (Sandbox Code Playgroud)
这显然只适用于dump.sql中的SQL语句.我不确定如何导入CSV.
小智 22
从使用SQLite DB的SCRATCH转到将CSV导入表中:
sqlite3 <your_db_file_name>*它将被创建为空文件.CREATE TABLE <table_Name> (<field_name1> <Type>, <field_name2> <type>);创建表并且列与文件中的数据匹配后,您可以执行以上操作...
.mode csv <table_name>
.import <filename> <table_name>
Run Code Online (Sandbox Code Playgroud)
小智 11
sqlite3 .import命令不适用于普通的csv数据,因为即使在带引号的字符串中,它也会将任何逗号视为分隔符.
这包括尝试重新导入由shell创建的csv文件:
Create table T (F1 integer, F2 varchar);
Insert into T values (1, 'Hey!');
Insert into T values (2, 'Hey, You!');
.mode csv
.output test.csv
select * from T;
Contents of test.csv:
1,Hey!
2,"Hey, You!"
delete from T;
.import test.csv T
Error: test.csv line 2: expected 2 columns of data but found 3
Run Code Online (Sandbox Code Playgroud)
似乎我们必须将csv转换为Insert语句列表,或者可能使用不同的分隔符.
在SuperUser上,我看到了使用LogParser处理csv文件的建议,我将调查一下.
Ruf*_*ock 10
如果您乐意使用(python)脚本,那么有一个python脚本可以自动执行此操作:https://github.com/rgrp/csv2sqlite
这将为您自动创建表,并为您做一些基本的类型猜测和数据转换(例如,它将解决一些数字并将列类型设置为"真实").
请记住,SQLite的默认分隔符是管道"|"
sqlite> .separator ";"
sqlite> .import path/filename.txt tablename
Run Code Online (Sandbox Code Playgroud)
http://sqlite.awardspace.info/syntax/sqlitepg01.htm#sqlite010