The CSV Virtual Table
CSV 虚拟表
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
data=
TEXT
data=
argument 指定 TEXT
是 CSV 文件的文字内容。
schema=
SCHEMA
columns=
N
的 columns=
N
参数会导致虚拟表具有完全相同 Ñ
列。如果输入数据包含的列多于此,则会忽略多余的列。如果输入数据包含较少的列,则额外的列将填充 N
ULL。