如何将.sql文件导入SQLite3?

139
我有一些.sql文件,其中包含以下内容:
#cat db.sql
create table server(name varchar(50),ipaddress varchar(15),id init)
create table client(name varchar(50),ipaddress varchar(15),id init)

如何将此文件导入SQLite,以便自动创建这些内容?

sqlite3 DB.db < db.sql 错误:不完整的SQL语句:create table server(name varchar(50),ipaddress varchar(15),id init) create table client(name varchar(50),ipaddress varchar(15),id init)这个错误是什么意思? 我尝试了两种方法
.read db.sql 和 sqlite3 DB.db < db.sql
- webminal.org
5个回答

225

从 sqlite 提示符:

sqlite> .read db.sql

或者:

cat db.sql | sqlite3 database.db

另外,你的SQL语句是无效的 - 你需要在语句结尾加上;

create table server(name varchar(50),ipaddress varchar(15),id init);
create table client(name varchar(50),ipaddress varchar(15),id init);

sqlite3 DB.db < db.sql 错误:不完整的 SQL:create table server(name varchar(50),ipaddress varchar(15),id init) create table client(name varchar(50),ipaddress varchar(15),id init) 这个错误是什么意思?我尝试了两种方法>.read db.sql和sqlite3 DB.db < db.sql...谢谢 - webminal.org
1
谢谢!现在它可以工作了。我错过了分号,并包含了无效字符,如“-”。现在没问题了。谢谢!!! - webminal.org
@lakshmipathi,如果它能够正常工作,您可以通过单击答案旁边的投票计数下面的勾选标记之一来接受回答。 - Dominic Rodger
对于PostgreSQL,您可以使用pg2sqlite进行转换,详见我的回答 - caiiiycuk
.dump 命令生成的 SQL 文件是否会在执行 .read <file> 时删除所有表等内容? - chovy

93

使用 sqlite3 database.sqlite3 < db.sql。你需要确保你的文件包含 SQLite 的有效 SQL 语句。


我也是(Windows 命令行语法)。谢谢。不过确实很慢。 - Barton
4
我不耐烦地尝试使用一个超过40MB的.sql文件来构建,于是我停止了sqlite3 database.sqlite3 < db.sql的操作,改用sqlite>.read db.sql命令。但结果发现这种替代方法同样很慢。 - Barton

33

或者,你可以从Windows命令行提示符/批处理文件中执行此操作:

sqlite3.exe DB.db ".read db.sql"

其中DB.db是数据库文件,db.sql是要运行/导入的SQL文件。


这对我有用,尽管我在终端中将sqlite3作为命令运行:sqlite3 DB.db“.read db.sql” - Bugbeeb
在使用Windows 11上的Powershell时,可以使用.\sqlite.exe从当前目录加载。 - undefined

28

你也可以这样做:

sqlite3 database.db -init dump.sql

3
这将使得 sqlite3 客户端在交互提示符下运行。 - pabouk - Ukraine stay strong

0
例如,您可以使用以下方法将apple.db导出为backup.sql文件:.dump.schema。如果backup.sql文件不存在,它将被创建。使用.dump可以导出包含数据的模式,而.schema只能导出模式。我的答案解释了如何导出数据库。
sqlite3 apple.db .dump > backup.sql

或者:

sqlite3 apple.db .schema > backup.sql

现在,您可以按照下面的示例将backup.sql导入到orange.db中。如果orange.db不存在,则会创建它。
sqlite3 orange.db < backup.sql

或者:

sqlite3 orange.db
...
sqlite> .read backup.sql

小心,如果你直接按照下面的方式将apple.db导入orange.db
sqlite3 orange.db < apple.db

或者:

sqlite3 orange.db
...
sqlite> .read apple.db

然后,你会得到以下错误:
解析错误,位于第1行附近:"SQLite":语法错误

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接