如何导入负载.SQL或.csv文件到SQLite的?如何导入负载.SQL或.csv文件到SQLite

2019-05-13 20:47发布

我需要转储.SQL.csv文件到SQLite的(我使用sqlite3的API)。 我只找到文档导入/加载表,而不是整个数据库。 现在,当我输入:

sqlite3prompt> .import FILENAME TABLE 

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

Answer 1:

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

sqlite> .read <filename>

若要从CSV文件导入你需要指定文件类型和目标表:

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


Answer 2:

Try doing it from the command like:

cat dump.sql | sqlite3 database.db

This will obviously only work with SQL statements in dump.sql. I'm not sure how to import a CSV.



Answer 3:

从头去使用SQLite数据库来导入CSV到表:

  • 从网站上获取的SQLite。
  • 在命令提示运行sqlite3 <your_db_file_name> *将作为一个空文件创建。
  • 让你在新的数据库中的新表。 该表必须为进口符合您的CSV字段。
  • 你由SQL命令这样做: CREATE TABLE <table_Name> (<field_name1> <Type>, <field_name2> <type>);

一旦你创建的表和列从文件匹配您的数据,那么你可以做上面的...

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


Answer 4:

因为即使是在引用字符串对待任何逗号作为分隔符的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文件插入语句列表,或者一个不同的分隔符会工作。

在超级用户时,我看到一个建议,使用LOGPARSER的处理CSV文件,我会考虑这样做。



Answer 5:

如果你很高兴使用(Python)的剧本则是在自动完成此python脚本: https://github.com/rgrp/csv2sqlite

这将自动创建该表为您以及做一些基本类型的猜测和数据铸造你(所以例如,它会制定出的东西是一个数字,并设置列类型为“真”)。



Answer 6:

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

sqlite> .separator ";"

sqlite> .import path/filename.txt tablename 

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



Answer 7:

SQLite是非常灵活的,因为它也允许SQLite的特定点命令在SQL语法,(尽管它们是由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语句在SQL SQLite的,就像你可以在任何其他RDB做,像MySQL与LOAD DATA INFILE等。但是,不建议这样做。



Answer 8:

退房termsql。 https://gitorious.org/termsql https://gitorious.org/termsql/pages/Home

这将文本转换为SQL命令行上。 (CSV只是文本)

例:

cat textfile | termsql -o sqlite.db

默认情况下,分隔符是空白,所以,使其与CSV工作正在使用commata,你会做这样的:

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


Answer 9:

如果您在Windows中使用它,请务必将路径添加到数据库中的“”,并使用双斜线\路径,以确保窗户理解它。



Answer 10:

这是你可以插入标识列:

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文件:\代码\分贝\预定义\

data.db是在C:\代码\分贝\

myfile.txt中包含换行字符分隔的字符串。

如果你想添加更多的列,它更容易使用的管道字符,这是默认将它们分开。



Answer 11:

导入CSV或SQL一起SQLite的phpLiteAdmin ,它是优秀的。



文章来源: How to import load a .sql or .csv file into SQLite?