文件和文件夹是任何操作系统的必要部分。但是,当你需要在数据库中工作时,CSV文件就派上用场了。CSV文件也是Microsoft Excel文件的另一个名称,用于以行和列的形式存储数据。Excel或CSV文件可用于在数据库的表格中导入数据。因此,我们决定介绍将含有列数据的CSV文件导入到SQLite数据库表中的方法。请确保在你的Ubuntu 20.04中安装了SQLite C-library of SQL。
让我们开始今天的文章,用Ctrl+Alt+T的快捷键在Ubuntu 20.04中启动控制台应用程序。在成功启动控制台应用程序后,你需要在 "sudo "关键字前面的apt包的帮助下更新你的Linux系统。它将要求你提供当前工作的用户账户密码,通过这个查询恢复更新过程。我们已经添加了密码,按了回车键,然后继续。
一段时间后,你的系统就会被更新了。在这之后,你需要升级你的系统和它的包,即模块和库。试试同样的指令,用 "升级 "这个关键词代替 "更新 "这个词。
确保在你的Linux的主文件夹内有一些CSV文件,以便在SQLite数据库内使用,即把它的数据导入到一个表中。因此,我们在主文件夹内创建了一个名为 "data.csv "的新CSV文件,以便通过导入在表中使用。让我们在Ubuntu 20.04系统的shell终端使用关键字 "sqlite3 "启动SQLite数据库。SQLite的查询区将被启动,如下图所示。
我们一直在使用数据库中的".tables "指令启动本指南,以显示表的列表。现在,我们在这个数据库中没有任何表。
为了导入CSV文件,我们需要在数据库中建立一个表。因此,我们必须创建一个与CSV文件中的列名和类型相同的表。因此,我们用CREATE TABLE指令创建了一个名为DATA的新表,包含两列,即TEXT类型的 "国家 "和整数类型的 "人民 "列。这个新创建的表还没有记录。
CREATE TABLE DATA("Country"TEXT, "People" INT);
SELECT \* FROM DATA;
让我们使用".import "指令在DATA表内导入名为 "data.csv "的CSV文件,后面是文件的路径和表的名称,如下图所示。
.import/home/linux/DATA.csvDATA
在成功执行查询后,我们应该确认导入是否正确和成功。为此,你需要在你的SQLite shell上再次尝试对表DATA的SELECT指令。这个指令的输出显示,导入是成功的。data.csv文件中的所有记录都被正确导入到DATA表中。
select \* from data;
让我们试试SELECT查询中的条件。我们添加了WHERE子句,以显示从表 "DATA "的导入数据中的所有记录,其中列 "People "包含小于或等于550000的值。它总共返回了8条记录。
S\ELECT \* FROM DATA WHEREPeople\>= 550000;
让我们在SQLite数据库中尝试用WHERE子句进行SELECT查询,以显示表 "DATA "中列 "People "的值在550000和750000之间的所有记录。为此,我们一直在使用BETWEEN关键字,并且只有三个结果。
SELECT \* FROM DATA WHEREPeopleBETWEEN 550000 AND 750000。
让我们来看看另一个导入同一文件的例子,其中有一组不同的记录。这一次,数据集包含15行,有三个列,即姓名、年龄和工资。列Name和Salary是Integer类型,而列 "Name "是文本类型。
对于这些数据,我们已经创建了一个名为 "Detail "的新表,其中三列的名称与data.csv文件相同,即姓名、年龄和工资。在将data.csv文件导入到Detail表中之前,根据在SQLite shell屏幕上执行的SELECT指令,我们还没有发现其中的任何记录,即空表。
CREATE TABLEDetail(Name TEXT,AgeINT,SalaryINT);
SELECT \* FROMDetail;
为了在Detail表中导入data.csv文件的数据,我们需要尝试使用".import "指令,并在该查询的最后加上 "data.csv "文件的路径,即/home/Linux/,以及表 "Detail "的名称。这个查询将不返回任何东西,显示导入已经成功。因此,我们将再次使用SELECT指令来确认导入是否完美和有效。带 "*"字符的SELECT指令,后面是表 "Detail "的名称,显示了刚刚导入到表中的data.csv文件的所有记录。这意味着导入成功了。
.import/home/linux/DATA.csv Detail
让我们在表Detail的导入CSV列 "Salary "上应用WHERE子句,只显示Salary列的值小于35000的记录。这个带有WHERE条件的查询返回两条记录作为结果。
SELECT \* FROMDetailWHEREAge< 20;
让我们在SELECT查询中使用WHERE子句来显示表 "Detail "中的记录,其中导入的数据中 "Age "列的值在35到47之间。这一次,我们有五条记录,如下图所示。
SELECT \* FROMDetailWHEREAgeBETWEEN 35 AND 47;
结论
本文使用CSV文件导入数据记录到SQLite数据库表中,在shell处使用 "import "指令。你需要确保CSV的列名和表的列名必须相同,即大写或小写。我们还讨论了使用一些条件在表中显示导入的数据的方法。