如何将SQLite数据导入DuckDB?能否直接查询SQLite数据文件?
SQLite数据导入DuckDB及直接查询方法
一、直接从DuckDB查询SQLite数据文件
DuckDB通过官方扩展支持直接读取SQLite文件,无需提前导入,操作步骤如下:
- 启用SQLite扩展:
INSTALL sqlite; LOAD sqlite;
- 两种查询方式:
- 方式1:挂载SQLite数据库
将SQLite文件挂载为DuckDB的附加数据库,之后可直接访问其中的表:ATTACH 'path/to/your/sqlite.db' AS sqlite_db (TYPE sqlite); -- 查询SQLite中的目标表 SELECT * FROM sqlite_db.your_target_table LIMIT 10; - 方式2:直接扫描SQLite表
使用sqlite_scan函数直接读取指定SQLite文件中的表:SELECT * FROM sqlite_scan('path/to/your/sqlite.db', 'your_target_table') LIMIT 10;
- 方式1:挂载SQLite数据库
二、将SQLite数据导入DuckDB
如果需要将SQLite数据持久化到DuckDB中,可通过以下方式完成导入:
- 基于挂载数据库导入:
-- 先挂载SQLite数据库(步骤同上述方式1) ATTACH 'path/to/your/sqlite.db' AS sqlite_db (TYPE sqlite); -- 创建DuckDB表并导入全量数据 CREATE TABLE your_duckdb_table AS SELECT * FROM sqlite_db.your_target_table;
- 直接扫描导入:
无需挂载数据库,直接通过sqlite_scan将数据写入DuckDB表:
CREATE TABLE your_duckdb_table AS SELECT * FROM sqlite_scan('path/to/your/sqlite.db', 'your_target_table');
- 增量追加导入:
如果已有目标表,仅需追加SQLite中的数据:
-- 若未创建目标表,先创建空表匹配结构 CREATE TABLE your_duckdb_table AS SELECT * FROM sqlite_scan('path/to/your/sqlite.db', 'your_target_table') LIMIT 0; -- 追加数据 INSERT INTO your_duckdb_table SELECT * FROM sqlite_scan('path/to/your/sqlite.db', 'your_target_table');
内容的提问来源于stack exchange,提问作者vega77
相关产品推荐
相关产品推荐

