You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MySQL能否直接读取CSV文件而非导入?求类似PostgreSQL外部表方案

MySQL 中类似 PostgreSQL 外部表的 CSV 访问方案

针对你需要直接访问实时重写的CSV文件、无需导入的需求,MySQL有两种主流实现方式:

1. 原生CSV存储引擎(需配合手动刷新)

MySQL自带CSV存储引擎,可直接将CSV文件映射为数据库表,文件重写后需手动触发刷新才能读取最新内容:

创建关联CSV的表

CREATE TABLE IF NOT EXISTS rawdata.system_ps (
  pid TEXT,
  started TEXT,
  cpu_pcnt TEXT,
  mem_pcnt TEXT,
  command TEXT
) ENGINE=CSV 
DEFAULT CHARACTER SET utf8mb4 
FIELDS TERMINATED BY ',' 
ENCLOSED BY '"' 
LINES TERMINATED BY '\n' 
IGNORE 1 LINES; -- 忽略首行表头,对应PostgreSQL的HEADER 'true'

注意事项

  • 需要将CSV文件放到MySQL数据目录下的rawdata子目录(对应表的schema),或者通过DATA DIRECTORY参数指定自定义路径(需确保MySQL进程对该路径有读写权限)。
  • 当crontab重写CSV文件后,执行以下命令让MySQL重新读取文件:
    FLUSH TABLES rawdata.system_ps;
    

2. CONNECT存储引擎(实时读取,无需手动刷新)

CONNECT是第三方存储引擎,支持直接访问任意路径下的CSV文件,且能实时读取最新内容,无需手动刷新,更贴合你的场景:

创建外部CSV表

CREATE TABLE IF NOT EXISTS rawdata.system_ps (
  pid TEXT,
  started TEXT,
  cpu_pcnt TEXT,
  mem_pcnt TEXT,
  command TEXT
) ENGINE=CONNECT 
DEFAULT CHARACTER SET utf8mb4
TABLE_TYPE=CSV 
FILE_NAME='/var/tmp/system_ps.csv' 
HEADER=1; -- 表示文件包含表头行

注意事项

  • CONNECT引擎默认不随MySQL安装,需要单独安装(部分Linux发行版的MySQL扩展包会包含,也可自行编译)。
  • 确保MySQL进程对/var/tmp/system_ps.csv路径有读取权限。

你提供的PostgreSQL外部表代码(中文翻译)

-- 若不存在则创建rawdata模式下的system_ps外部表
CREATE FOREIGN TABLE IF NOT EXISTS rawdata.system_ps (
  pid 文本,
  started 文本,
  cpu_pcnt 文本,
  mem_pcnt 文本,
  command 文本
) 
-- 使用名为"import"的外部服务器
SERVER "import" 
OPTIONS (
  FILENAME '/var/tmp/system_ps.csv', -- 指定CSV文件路径
  FORMAT 'csv', -- 数据格式为CSV
  HEADER 'true' -- 文件包含表头行
);

内容的提问来源于stack exchange,提问作者Steve Lloyd

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.04 16:55:09