postgreSQL根据表字段生成insert语句

在PostgreSQL中,你可以使用PL/pgSQL函数或者SQL语句来生成INSERT语句。以下是一个使用PL/pgSQL函数的例子,该函数会遍历表中的所有行,为每一行生成一个INSERT语句:




CREATE OR REPLACE FUNCTION generate_insert_statements(tablename TEXT) RETURNS SETOF TEXT AS $$
DECLARE
    row_values TEXT;
    column_list RECORD;
    first_column BOOLEAN = TRUE;
BEGIN
    FOR column_list IN
        SELECT column_name
        FROM information_schema.columns
        WHERE table_schema = 'public' AND table_name = tablename
    LOOP
        IF first_column THEN
            first_column := FALSE;
            row_values := '(';
        ELSE
            row_values := row_values || ', ';
        END IF;
        row_values := row_values || quote_ident(column_list.column_name);
    END LOOP;
 
    row_values := row_values || ') VALUES (';
 
    FOR column_list IN
        SELECT column_name
        FROM information_schema.columns
        WHERE table_schema = 'public' AND table_name = tablename
    LOOP
        IF first_column THEN
            first_column := FALSE;
        ELSE
            row_values := row_values || ', ';
        END IF;
        row_values := row_values || 'EXCLUDED.' || quote_ident(column_list.column_name);
    END LOOP;
 
    row_values := row_values || ')';
 
    RETURN QUERY EXECUTE format(
        'INSERT INTO %I %s',
        tablename,
        row_values
    );
END;
$$ LANGUAGE plpgsql;

使用该函数时,你需要指定表名作为参数。函数会返回一个包含生成的INSERT语句的集合。

请注意,这个函数生成的INSERT语句使用了“EXCLUDED”关键字来引用新插入行的值。这是在使用ON CONFLICT子句时的一个特殊用法,它在冲突发生时插入新行。如果你不需要这种特性,你可能需要修改函数来适应你的需求。

评论已关闭

推荐阅读

DDPG 模型解析,附Pytorch完整代码
2024年11月24日
DQN 模型解析,附Pytorch完整代码
2024年11月24日
AIGC实战——Transformer模型
2024年12月01日
Socket TCP 和 UDP 编程基础(Python)
2024年11月30日
python , tcp , udp
如何使用 ChatGPT 进行学术润色?你需要这些指令
2024年12月01日
AI
最新 Python 调用 OpenAi 详细教程实现问答、图像合成、图像理解、语音合成、语音识别(详细教程)
2024年11月24日
ChatGPT 和 DALL·E 2 配合生成故事绘本
2024年12月01日
omegaconf,一个超强的 Python 库!
2024年11月24日
【视觉AIGC识别】误差特征、人脸伪造检测、其他类型假图检测
2024年12月01日
[超级详细]如何在深度学习训练模型过程中使用 GPU 加速
2024年11月29日
Python 物理引擎pymunk最完整教程
2024年11月27日
MediaPipe 人体姿态与手指关键点检测教程
2024年11月27日
深入了解 Taipy:Python 打造 Web 应用的全面教程
2024年11月26日
基于Transformer的时间序列预测模型
2024年11月25日
Python在金融大数据分析中的AI应用(股价分析、量化交易)实战
2024年11月25日
AIGC Gradio系列学习教程之Components
2024年12月01日
Python3 `asyncio` — 异步 I/O,事件循环和并发工具
2024年11月30日
llama-factory SFT系列教程:大模型在自定义数据集 LoRA 训练与部署
2024年12月01日
Python 多线程和多进程用法
2024年11月24日
Python socket详解,全网最全教程
2024年11月27日