sql - 如何使用 SQL 复制 csv 文件
问题描述
我需要在我的数据库中导入一个 csv。我在 sql 中创建了一个执行导入的函数:
CREATE OR REPLACE FUNCTION import_match_csv(filename varchar(500), username varchar(500)) RETURNS VOID AS $$
BEGIN
CREATE TABLE match_import (....));
COPY match_import FROM 'filename' DELIMITER ',' CSV HEADER;
INSERT ....
DROP TABLE match_import;
END;
$$ LANGUAGE plpgsql;
调用写在psql提示符下的函数
SELECT * FROM import_match_csv('/Users/benny/Desktop/match.csv', 'benny');
我得到错误:
错误:错误:无法打开文件“文件名”进行读取:没有这样的文件或目录提示:COPY FROM 指示 PostgreSQL 服务器进程读取文件。您可能需要一个客户端工具,例如 psql 的 \copy。CONTEXT:SQL 语句“COPY match_import FROM 'filename'DELIMITER',' CSV HEADER”PL/pgSQL 函数 import_match_csv(字符变化,字符变化)SQL 语句的第 33 行
解决方案
您必须使用动态 SQL,因为COPY
不支持参数:
EXECUTE format(
'COPY match_import FROM %L (FORMAT ''csv'', DELIMITER '','', HEADER)',
filename
);
推荐阅读
- c# - 找不到这个 localhost 页面,可能是配置问题
- android - 如何在android webview中检测按钮点击网页
- python - Librosa 的重采样不匹配
- javascript - 从 servlet 响应下载 JavaScript 中的 Excel
- laravel - 背包换laravel如何在ajax选择时更改字段属性
- python - 如何在 django 中修复表单验证“未知”
- c++ - C++ 中的不可变列表
- azure-api-management - Azure apimanagement 订阅了操作的子集,这可能吗?
- ios-simulator - NSURLConnection 以错误 iOS13 模拟器和 MACOS 10.14.6 完成
- google-analytics - 如何手动设置我的谷歌分析事件