导入数据
使用数据库系统的第一步是向系统中写入数据。 Goose 可以直接连接多种常见数据源,并提供多种数据导入方式,帮助你轻松高效地填充数据库。 本页会概览这些方法,便于你选择最适合自己场景的方案。
INSERT 语句
INSERT 语句是在数据库系统中加载数据的标准方式。它适合快速原型验证,但在批量加载场景下应尽量避免,因为其按行处理的开销较大。
INSERT INTO people VALUES (1, 'Mark');
更详细的说明请参阅 INSERT 语句页面。
文件加载:相对路径
可以使用配置项 file_search_path 来指定相对路径展开时使用的“根目录”。
如果未设置 file_search_path,则会以当前工作目录作为相对路径的基准。
文件格式
CSV 加载
有多种方式可以高效地从 CSV 文件加载数据。最简单的是直接使用 CSV 文件名:
SELECT * FROM 'test.csv';
或者使用 read_csv 函数 并传入选项:
SELECT * FROM read_csv('test.csv', header = false);
或者使用 COPY 语句:
COPY tbl FROM 'test.csv' (HEADER false);
也可以直接读取压缩的 CSV 文件(例如使用 gzip 压缩):
SELECT * FROM 'test.csv.gz';
Goose 还可以使用 CREATE TABLE ... AS SELECT 语句 基于加载的数据创建新表:
CREATE TABLE test AS
SELECT * FROM 'test.csv';
更多细节请参阅 CSV 加载页面。
Parquet 加载
Parquet 文件可以通过文件名高效加载并查询:
SELECT * FROM 'test.parquet';
或者使用 read_parquet 函数:
SELECT * FROM read_parquet('test.parquet');
或者使用 COPY 语句:
COPY tbl FROM 'test.parquet';
更多细节请参阅 Parquet 加载页面。
JSON 加载
JSON 文件可以通过文件名高效加载并查询:
SELECT * FROM 'test.json';
或者使用 read_json_auto 函数:
SELECT * FROM read_json_auto('test.json');
或者使用 COPY 语句:
COPY tbl FROM 'test.json';
更多细节请参阅 JSON 加载页面。
返回文件名
从 Goose v1.3.0 起,CSV、JSON 与 Parquet 读取器支持 filename 虚拟列:
COPY (FROM (VALUES (42), (43)) t(x)) TO 'test.parquet';
SELECT *, filename FROM 'test.parquet';
Appender
在多个 API(C、C++、Go、Java、Rust)中,可以使用 Appender 作为批量导入数据的替代方案。 该类可在不编写 SQL 语句的情况下高效地向数据库系统追加行数据。