首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

The CSV Virtual Table

1.概述

CSV 虚拟表读取 RFC 4180 格式的逗号分隔值,并将该内容作为 SQL 表的行和列返回。

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

CSV 虚拟表没有内置到 SQLite 合并中。它可以作为一个单独的源文件提供,可以编译成可载入的扩展名。来自命令行 shell 的 CSV 虚拟表的典型用法如下所示 :

.load ./csv
CREATE VIRTUAL TABLE temp.t1 USING csv(filename='thefile.csv');
SELECT * FROM t1;

上面的脚本的第一行会导致命令行 shell 读取并激活 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 虚拟表显示了一个文件名='th3file.csv' 参数。但其他论点也是可能的。

  • filename=FILENAME

filename=参数指定从哪个 CSV 内容被读出的外部文件。每个 CSV 虚拟表必须具有文件名=参数或数据=参数,而不是两者。

  • data=TEXT

data= argument 指定 TEXT 是 CSV 文件的文字内容。

  • schema=SCHEMA

schema=参数指定的 CSV 虚拟表传递给 sqlite3_declare_vtab()接口,以便定义在虚拟表中的列的数量和名称的CREATE TABLE语句。如果省略了 schema = columns = 参数,则 CSV 虚拟表将读取输入内容的第一行,以确定列的数量并将列名称命名为 cNNN,其中 NNN 值是连续的整数。不允许同时拥有 schema = columns = 参数。

  • columns=N

columns=N 参数会导致虚拟表具有完全相同 Ñ 列。如果输入数据包含的列多于此,则会忽略多余的列。如果输入数据包含较少的列,则额外的列将填充 NULL。

扫码关注腾讯云开发者

领取腾讯云代金券