Answers:
要从SQL文件导入,请使用以下命令:
sqlite> .read <filename>
要从CSV文件导入,您需要指定文件类型和目标表:
sqlite> .mode csv <table>
sqlite> .import <filename> <table>
尝试从以下命令执行此操作:
cat dump.sql | sqlite3 database.db
显然,这仅适用于dump.sql中的SQL语句。我不确定如何导入CSV。
.mode csv
sqlite3 database.db < dump.sql
无效,是SOOOO SLOW !!!因此请cat dump.sql | sqlite3 database.db
改用!:D
要从带有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>
sqlite3 .import命令不适用于普通的csv数据,因为即使将带引号的字符串也将逗号视为定界符。
这包括尝试重新导入由外壳程序创建的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
看来我们必须将csv转换为Insert语句列表,否则可能会使用其他定界符。
在SuperUser上,我看到了一个建议使用LogParser处理csv文件,我将对此进行研究。
如果您乐于使用(python)脚本,则可以在以下位置使用python脚本来自动执行此操作:https : //github.com/rgrp/csv2sqlite
这将为您自动创建表格,并为您进行一些基本的类型猜测和数据转换(例如,它将得出数字并将列类型设置为“ real”)。
sqlite3.ProgrammingError: You must not use 8-bit bytestrings unless you use a text_factory that can interpret 8-bit bytestrings (like text_factory = str). It is highly recommended that you instead just switch your application to Unicode strings
#csv2sqlite.py {csv-file-path} {sqlite-db-path} [{table-name}]
请记住,SQLite的默认分隔符是管道“ |”
sqlite> .separator ";"
sqlite> .import path/filename.txt tablename
http://sqlite.awardspace.info/syntax/sqlitepg01.htm#sqlite010
SQLite非常灵活,因为它还允许使用SQL语法中的SQLite特定点命令(尽管它们由CLI解释。)这意味着您可以执行这样的操作。
创建一个sms
这样的表:
# sqlite3 mycool.db '.schema sms'
CREATE TABLE sms (_id integer primary key autoincrement, Address VARCHAR, Display VARCHAR, Class VARCHAR, ServiceCtr VARCHAR, Message VARCHAR, Timestamp TIMESTAMP NOT NULL DEFAULT current_timestamp);
然后是两个文件:
# echo "1,ADREZZ,DizzPlay,CLAZZ,SMSC,DaTestMessage,2015-01-24 21:00:00">test.csv
# cat test.sql
.mode csv
.header on
.import test.csv sms
要使用SQL文件测试CSV文件的导入,请运行:
# sqlite3 -csv -header mycool.db '.read test.sql'
总之,这意味着您可以.import
在SQLite SQL中使用该语句,就像在任何其他RDB中一样,例如MySQL withetc LOAD DATA INFILE
。但是,不建议这样做。
查看termsql。https://gitorious.org/termsql https://gitorious.org/termsql/pages/首页
它将命令行上的文本转换为SQL。(CSV只是文本)
例:
cat textfile | termsql -o sqlite.db
默认情况下,定界符为空格,因此要使其与使用逗号的CSV一起使用,您需要这样做:
cat textfile | termsql -d ',' -o sqlite.db
或者,您可以执行以下操作:
termsql -i textfile -d ',' -o sqlite.db
默认情况下,它将生成列名“ COL0”,“ COL1”,如果您希望它使用第一行作为列名,请执行以下操作:
termsql -i textfile -d ',' -1 -o sqlite.db
如果要设置自定义列名,请执行以下操作:
termsql -i textfile -d ',' -c 'id,name,age,color' -o sqlite.db
这是您可以插入身份列的方法:
CREATE TABLE my_table (id INTEGER PRIMARY KEY AUTOINCREMENT, name COLLATE NOCASE);
CREATE TABLE temp_table (name COLLATE NOCASE);
.import predefined/myfile.txt temp_table
insert into my_table (name) select name from temp_table;
myfile.txt是C:\ code \ db \ predefined \中的文件
data.db位于C:\ code \ db \
myfile.txt包含用换行符分隔的字符串。
如果要添加更多列,则使用默认的竖线字符更容易将它们分开。
使用phpLiteAdmin将您的csv或sql导入sqlite ,这非常好。