gpt4 book ai didi

sql - 将 SQL 语句作为记录值插入到 PostgreSQL 列中

转载 作者:行者123 更新时间:2023-11-29 14:26:00 24 4
gpt4 key购买 nike

我使用一个使用 PostgreSQL 10.7 的应用程序。该应用程序的一部分允许您将一组数据库对象和 SQL 语句捆绑到一个包中,稍后您可以在创建开发环境时运行该包。

每个对象和SQL语句在数据库中都有自己的记录。我必须创建超过 1000 条记录,所以我正在尝试创建一个脚本,为我将 SQL 语句插入数据库。

我创建了我的脚本,但是一旦 Postgres 看到第二个“值”命令是我试图插入的记录的一部分,我就会收到错误消息。

这是我正在尝试做的一个例子:

````insert into MY_TABLE 
( NAME,
SQL_STMT,
ADDED_BY,
DATE_ADDED )
values
( 'package_1',
'INSERT INTO TABLE_1(NAME, OBJECT_ID, ORDER_NUMBER) VALUES
'LCMSMS','PEST',1);'
'CJONES',
'9/11/2019' );````

我期待它被插入,但我收到以下错误。谁能指导我如何“插入我的插入语句”?

LINE 8: ...NAME,SQL_STMT,ADDED_BY,DATE_ADDED) VALUES ('LCMSMS...````

最佳答案

您的 SQL 语句包含嵌入式引号,与周围的引号冲突。您需要将这些引号加倍,例如:

````insert into MY_TABLE 
( NAME,
SQL_STMT,
ADDED_BY,
DATE_ADDED )
values
( 'package_1',
'INSERT INTO TABLE_1(NAME, OBJECT_ID, ORDER_NUMBER) VALUES (''LCMSMS'', ''PEST'', 1);'
'CJONES',
'9/11/2019' );````

正如 mu is too short 评论的那样,另一种解决方案是使用 Postgres dollar quoting syntax .这为您节省了对每个嵌入引号进行双引号的工作:

````insert into MY_TABLE 
( NAME,
SQL_STMT,
ADDED_BY,
DATE_ADDED )
values
( 'package_1',
$$INSERT INTO TABLE_1(NAME, OBJECT_ID, ORDER_NUMBER) VALUES ('LCMSMS', 'PEST', 1);$$
'CJONES',
'9/11/2019' );````

关于sql - 将 SQL 语句作为记录值插入到 PostgreSQL 列中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57897852/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com