Small. Fast. Reliable.
Choose any three.
CSV虚拟表

1.概述

CSV虚拟表读取 RFC 4180格式的逗号分隔值,并返回该内容,就好像它是SQL表的行和列一样。

CSV虚拟表对于需要批量加载大量逗号分隔值内容的应用程序很有用。CSV虚拟表还可用作实现其他虚拟表的模板源文件。

CSV虚拟表未内置到SQLite合并中。它作为 单独的源文件提供 ,可以编译成可加载的扩展名命令行外壳中CSV虚拟表的典型用法 如下:

.load ./csv
使用csv(filename ='thefile.csv')创建虚拟表temp.t1;
选择*从t1;

上面脚本的第一行使命令行外壳读取并激活CSV的运行时可加载扩展。对于应用程序,等效的C语言API是 sqlite3_load_extension()。请注意,扩展名中省略了文件扩展名(例如:“。dll”,“。so”或“ .dylib”)。不需要省略文件扩展名,但这有助于使脚本跨平台。SQLite将自动附加适当的扩展名。

上面的第二行创建了一个名为“ t1”的虚拟表,该表读取自变量中命名的文件的内容。列的数量和名称是通过读取内容的第一行自动确定的。CSV虚拟表的其他选项使您能够从字符串而不是单独的文件中获取CSV内容,并使程序员可以更好地控制列的数量和名称。选项详细说明如下。CSV虚拟表通常创建为TEMP表,因此它仅在当前数据库连接中存在,而不会成为数据库架构的永久部分。请注意,SQLite中没有“ CREATE TEMP VIRTUAL TABLE”命令。而是在“温度”之前添加。虚拟表名称的架构前缀。

该示例的第三行显示了正在使用的虚拟表,该虚拟表用于读取CSV文件的所有内容。这可能是对虚拟表的最简单的使用。CSV虚拟表可以在可以使用普通虚拟表的任何地方使用。可以在子查询或通用表表达式中使用CSV虚拟表,也可以根据需要添加WHERE,GROUP BY,HAVING,ORDER BY和LIMIT子句。

2.争论

上面的示例显示了CSV虚拟表的单个filename ='thefile.csv'参数。但是其他论点也是可能的。

3.列名

虚拟表的列名主要由schema =参数确定 。如果省略了schema =参数,但标头为true,则在CSV文件第一行中找到的值将成为列名。如果省略了schema =参数,并且标头为false,则列的名称为“ c0”,“ c1”,“ c2”,依此类推。