如何在SQLite文件中执行SQL语句

1,574 阅读5分钟

"SQLite允许我们直接从一个文件中运行命令。如果你有一个冗长的程序,例如建立几个不同的表并为它们填充数据,这就特别有利。在使用SQLite命令提示符外壳时,使用.mode dot命令与.output或.once命令关联,将查询结果输出到文件中,或者使用.read命令在SQLite外壳中从文件中读取SQL命令。在这里,我们将看到如何在SQLite shell中执行SQL命令并在文件中显示结果。

我们必须首先安装SQLite3 shell应用程序,然后才能使用它。如果已经安装了SQLite,那么检查该程序的位置是否已经被添加到我们的本地PATH环境变量中,因为这将使我们更容易访问数据库文件以及其他可能需要的文件。然后,从命令提示符下cd到数据库文件的文件夹。确保该文件与你生成的SQLite数据库在同一个目录下"。

使用sqlite3作为命令;这应该会出现SQLite shell,屏幕与下面看到的相似。首先,我们指定了我们的文件所在文件夹的路径,然后通过使用sqlite3命令创建了一个名为 "hospital.db "的数据库。

该数据库在SQLite中被成功创建;你可以通过在shell中使用.databases命令来查看它。现在,我们有一个CREATE语句,用来在给定的数据库中创建一个表。我们创建了一个名为 "病人 "的表。这个表保存了病人的记录,其中包括ID作为主键,数据类型为INT,NAME为CHAR数据类型,WARD为TEXT类型。

CREATE TABLE patients(
IDINT ,
NAMEchar(10),
ward flaot
)。

表正在建立,列正在被定义。使用INSERT命令,我们现在已经包括了每一列的数据。

INSERT INTOpatientsVALUES (1, 'Nayab', 'Medical');
INSERT INTOpatientsVALUES (2, 'Sadia','cardiology' );
INSERT INTOpatientsVALUES (3, 'Aman','neurosurgery');
INSERT INTOpatientsVALUES(4, 'Balaj','skin specialist');
INSERT INTOpatientsVALUES (5, 'Raima',' urology')。

例1
我们在这里运行SQL命令,并将结果打印在文件中。必须使用下面的命令来完成这个任务。命令上的.header是用来打开结果集的标题。

为了指导sqlite3工具以CSV模式提供结果,指定输出模式为CSV。

.output FILENAME命令用于将查询结果保存到一个文件中。在.output命令之后,所有后续的查询结果都将存储在你在FILENAME参数中选择的文件中。如果你只想把另一个单一的查询结果保存到一个文件中,就可以使用.once FILENAME命令。

我们可以使用没有任何参数的.output命令,将查询结果重新显示到标准输出。

.headersON
.mode csv
.output File.txt

使用上述命令后,我们有一个SELECT语句,显示我们文件中的表和表记录。

SELECT * FROMpatients;

当我们打开我们的文件时,SQL命令在这里运行,表的记录被显示出来。

例2
在上面的例子中,我们展示了如何将记录从shell插入到文件中。在这里,我们在文件里有一个SQL select命令。这个命令获取了表中病人的所有记录。我们使用了.读取文件名的方法。

SELECT * FROMpatients;

在这种情况下,File.txt脚本从当前文件夹/目录中读取。如果在一个单独的目录中,请指定整个路径。通过在SQLite shell中使用.read File.txt,这里可以看到表,因为我们已经从文件中执行了命令。

SELECTNAME,WARD
FROMpatients
ORDER BYNAME
LIMIT 4;

例3
这里,我们也是从文件中执行SQL命令,但在shell中使用了.timer命令。你可以使用.timer命令来激活或停用CPU时间测量。如果启用了这个选项,SQLite将监控并报告处理每个查询所需的操作系统时间。首先,我们有一个UPDATE命令,它通过WHERE CLAUSE设置NAME = UZAMA,在File.txt中的ID = 1。

UPDATEpatientsSETNAME= 'Uzama' WHEREID= 1

现在,我们已经在命令中设置了标题,也在命令中设置了定时器。然后,使用.read File.txt来显示File.txt中命令的结果。请注意,定时器是打开的,并显示有更新值的记录,如下所示。

.headerON
.modeCOLUMN
.timerON
.read File.txt

例4
下面是使用.read命令的另一种方法。下面是来自File.txt的SQL命令,我们在SQLite shell中执行这个命令。

SELECT * FROMpatients;

不用打开SQLite,就可以使用.read命令。这个例子和上一个例子的对比是,上一个例子是在你已经从SQLite内部连接到SQLite之后进行的。然而,这个例子是在SQLite外部执行的。我们在数据库和文件所在的文件夹中给出了 "sqlite3 hospital.db ".read File.txt "命令。结果显示在下面的图片中。

sqlite3 hospital.db".read File.txt"

例5
这是我们从文件中执行SQL命令的第三种方法。File.txt中的命令如下。

SELECT *FROMpatients
WHEREID< 3
ORDER BYNAMEASC;

当连接到SQLite并使用sqlite3打开数据库时,以下方法将信息转发给数据库文件。

sqlite3 hospital.db<File.txt

例6
另一种从文件中执行SQL命令的方法是使用init方法。下面是SQL命令,它将由init方法来执行。

SELECTWARDFROMpatients;

因此,命令 "sqlite3 hospital.db -init File.txt "也将从文件中执行SQL命令,如快照所示。

sqlite3 hospital.db-init File.txt

结论

最后,我们展示了从文件中执行SQL命令的四种不同方法。首先,我们必须将文件和数据库放在同一路径上;然后,我们可以成功地执行几个SQL命令。每种方法都是通过显示输出来实现的。