PostgreSQL如何将无列分隔符的文本文件以单列形式导入?
PostgreSQL 将无列分隔符文本文件导入为单列的实现方法
实现步骤
- 第一步:创建用于存储文本内容的表,这里使用临时表会在会话结束后自动清理,避免残留冗余表
- 第二步:使用
COPY命令完成文本文件的导入,指定仅向单个字段写入内容即可
完整实现代码
-- 先清理已存在的同名表,避免创建冲突 DROP TABLE IF EXISTS txt_file; -- 创建临时表,仅设置一个text类型字段存储每一行的原始文本 CREATE TEMP TABLE txt_file ( string text ); -- 导入文本文件,将括号内路径替换为你本地的实际文件路径即可 COPY txt_file (string) FROM '(...)/functions.txt' CSV;
注意事项
- 导入命令中的文件路径需要替换为本地实际的文件绝对路径,需确保PostgreSQL服务进程对该路径有读取权限,否则会触发权限报错
- 默认CSV格式的分隔符为英文逗号,如果你导入的文本内容中包含逗号,可能会被识别为列分隔符导致内容拆分,可在COPY语句中指定一个文本内不存在的字符作为分隔符,示例如下:
COPY txt_file (string) FROM '(...)/functions.txt' CSV DELIMITER E'\x01';
- 若导入Windows系统生成的文本,存在换行符兼容问题时,可额外添加
NEWLINE '\r\n'参数适配
内容的提问来源于stack exchange,提问作者SamuelFernandes
相关产品推荐
相关产品推荐

