如何导入加载一个.sql或.csv文件到SQLite?

我需要将一个.sql.csv文件转储到SQLite(我正在使用SQLite3 API)。 我只find了导入/加载表的文档,而不是整个数据库。 现在,当我input:

sqlite3prompt> .import FILENAME TABLE 

我得到一个语法错误,因为它期望一个表而不是整个数据库。

要从SQL文件导入,请使用以下命令:

 sqlite> .read <filename> 

要从CSV文件导入,您需要指定文件types和目标表:

 sqlite> .mode csv <table> sqlite> .import <filename> <table> 

尝试从命令做到这一点,如:

 cat dump.sql | sqlite3 database.db 

这显然只适用于dump.sql中的SQL语句。 我不知道如何导入CSV。

从SCRATCH和SQLite DB一起导入CSV到表中:

  • 从网站获取SQLite。
  • 在命令提示符下运行sqlite3 <your_db_file_name> *它将被创build为空文件。
  • 在新数据库中创build一个新表。 该表必须与您的CSV字段相匹配才能导入。
  • 您可以通过SQL命令执行此操作: CREATE TABLE <table_Name> (<field_name1> <Type>, <field_name2> <type>);

一旦你创build了表格,并且列中的数据与文件中的数据相匹配,那么你可以执行上述操作。

 .mode csv <table_name> .import <filename> <table_name> 

sqlite3 .import命令不能用于普通的csv数据,因为它将任何逗号作为分隔符,即使在带引号的string中也是如此。

这包括尝试重新导入由shell创build的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语句的列表,或者可能会使用不同的分隔符。

在超级用户,我看到了使用LogParser处理csv文件的build议,我将研究这一点。

如果你很乐意使用(python)脚本,那么有一个python脚本可以自动执行: https : //github.com/rgrp/csv2sqlite

这将为你自动创build表格,并为你做一些基本的猜测和数据转换(例如,它可以算出一些数字,并将列types设置为“真实”)。

请记住,SQLite的默认分隔符是pipe道“|”

 sqlite> .separator ";" sqlite> .import path/filename.txt tablename 

http://sqlite.awardspace.info/syntax/sqlitepg01.htm#sqlite010

SQLite是非常灵活的,因为它也允许SQL语法中的SQLite特定的点命令 (尽pipe它们被CLI解释)。这意味着你可以做这样的事情。

创build一个像这样的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文件testingCSV文件的导入,请运行:

 # sqlite3 -csv -header mycool.db '.read test.sql' 

总之,这意味着你可以在SQLite SQL中使用.import语句,就像你在其他任何RDB中可以做的一样,比如带有LOAD DATA INFILE MySQL等等。但是,这是不推荐的。

检查一下termsql。 https://gitorious.org/termsql https://gitorious.org/termsql/pages/Home

它在命令行上将文本转换为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 

如果你在windows中使用它,一定要在“”中添加path到db中,并且在path中使用双斜杠\以确保windows能够理解它。

用phpLiteAdmin导入你的csv或者sql到sqlite,这是非常好的。