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

PostgreSQL新手求助:将MySQL CSV导入语句转换为PostgreSQL可用语句

把MySQL的CSV导入语句转换成PostgreSQL版本

嘿,作为刚接触PostgreSQL的新手,从MySQL转过来找对应语法确实会有点懵!别担心,PostgreSQL用COPY(或者客户端专属的\copy)命令来实现类似的CSV导入功能,下面直接给你对应语句,再拆解每个部分的对应关系:

对应你需求的PostgreSQL语句

如果你的CSV文件在客户端本地(和你运行psql的机器同一台),用这个psql专属的\copy命令(和MySQL的LOAD DATA LOCAL行为最匹配):

\copy calculations.pricing FROM '/home/d/docs/DB.csv' WITH (
    FORMAT csv,
    DELIMITER ',',
    QUOTE '"',
    HEADER false  -- 如果你的CSV第一行是表头,改成true
);

如果文件在PostgreSQL服务器所在机器上,且PostgreSQL进程有读取权限,用服务器端的COPY命令:

COPY calculations.pricing FROM '/home/d/docs/DB.csv' WITH (
    FORMAT csv,
    DELIMITER ',',
    QUOTE '"',
    HEADER false
);

与原MySQL语句的参数对应关系

让你清楚每个部分怎么转:

  • LOAD DATA LOCAL INFILE '/path/to/file' → 客户端文件用\copy ... FROM '/path/to/file',服务器端文件用COPY ... FROM '/path/to/file'
  • INTO TABLE calculations.pricing → 直接把表名放在COPY/\copy后面
  • FIELDS TERMINATED BY ',' → 对应DELIMITER ','
  • ENCLOSED BY '"' → 对应QUOTE '"'
  • LINES TERMINATED BY '\n' → PostgreSQL的FORMAT csv默认会自动识别换行符,一般不需要额外指定;如果必须强制用\n,可以加NEWLINE '\n'参数到WITH子句里

额外注意事项

  1. 权限问题:服务器端的COPY需要PostgreSQL系统用户(通常是postgres)能读取目标文件;而\copy用的是你当前操作系统用户的权限,更适合本地导入场景。
  2. NULL值处理:如果你的CSV里用\N表示NULL(MySQL默认的方式),需要在WITH子句里加上NULL '\N',否则PostgreSQL会把\N当成普通字符串。
  3. 表头处理:如果你的CSV第一行是列名,记得把HEADER false改成HEADER true,这样PostgreSQL会跳过第一行并匹配列名。

内容的提问来源于stack exchange,提问作者D. Make

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 08:19:13