我有一个JSON表,如何在PLSQL中使用此信息创建一个SQL表?

发布于 2025-01-30 19:44:54 字数 2413 浏览 5 评论 0原文

我正在与PLSQL合作,并且有此JSON表(第一个变量), 如何将这些数据插入SQL表中,我已经尝试了此数据,但是我已经忽略了错误:

CREATE TABLE Prueba_ins_json (
        userId number(3),
        id number(3),
        title VARCHAR2(200),
        body VARCHAR2(800)
    );
DECLARE
  json_prueba VARCHAR(5000) := '[
                              {
                                "userId": 1,
                                "id": 1,
                                "title": "sunt aut facere repellat provident occaecati excepturi optio reprehenderit",
                                "body": "quia et suscipit\nsuscipit recusandae consequuntur expedita et cum\nreprehenderit molestiae ut ut quas totam\nnostrum rerum est autem sunt rem eveniet architecto"
                              },
                              {
                                "userId": 1,
                                "id": 2,
                                "title": "qui est esse",
                                "body": "est rerum tempore vitae\nsequi sint nihil reprehenderit dolor beatae ea dolores neque\nfugiat blanditiis voluptate porro vel nihil molestiae ut reiciendis\nqui aperiam non debitis possimus qui neque nisi nulla"
                              },
                              {
                                "userId": 1,
                                "id": 3,
                                "title": "ea molestias quasi exercitationem repellat qui ipsa sit aut",
                                "body": "et iusto sed quo iure\nvoluptatem occaecati omnis eligendi aut ad\nvoluptatem doloribus vel accusantium quis pariatur\nmolestiae porro eius odio et labore et velit aut"
                              },
                              {
                                "userId": 1,
                                "id": 4,
                                "title": "eum et est occaecati",
                                "body": "ullam et saepe reiciendis voluptatem adipisci\nsit amet autem assumenda provident rerum culpa\nquis hic commodi nesciunt rem tenetur doloremque ipsam iure\nquis sunt voluptatem rerum illo velit"
                              }
                              ]';
BEGIN
INSERT INTO Prueba_ins_json
  SELECT * FROM JSON_TABLE( json_prueba, '$[*]'
                              columns(
                                userId, id, title, body
                              )
                            );

END; 

I'm working with PLSQL and I have this JSON table (first variable),
How can I insert this data into a sql table, i have already try this, but i have SQL statement ignored error:

CREATE TABLE Prueba_ins_json (
        userId number(3),
        id number(3),
        title VARCHAR2(200),
        body VARCHAR2(800)
    );
DECLARE
  json_prueba VARCHAR(5000) := '[
                              {
                                "userId": 1,
                                "id": 1,
                                "title": "sunt aut facere repellat provident occaecati excepturi optio reprehenderit",
                                "body": "quia et suscipit\nsuscipit recusandae consequuntur expedita et cum\nreprehenderit molestiae ut ut quas totam\nnostrum rerum est autem sunt rem eveniet architecto"
                              },
                              {
                                "userId": 1,
                                "id": 2,
                                "title": "qui est esse",
                                "body": "est rerum tempore vitae\nsequi sint nihil reprehenderit dolor beatae ea dolores neque\nfugiat blanditiis voluptate porro vel nihil molestiae ut reiciendis\nqui aperiam non debitis possimus qui neque nisi nulla"
                              },
                              {
                                "userId": 1,
                                "id": 3,
                                "title": "ea molestias quasi exercitationem repellat qui ipsa sit aut",
                                "body": "et iusto sed quo iure\nvoluptatem occaecati omnis eligendi aut ad\nvoluptatem doloribus vel accusantium quis pariatur\nmolestiae porro eius odio et labore et velit aut"
                              },
                              {
                                "userId": 1,
                                "id": 4,
                                "title": "eum et est occaecati",
                                "body": "ullam et saepe reiciendis voluptatem adipisci\nsit amet autem assumenda provident rerum culpa\nquis hic commodi nesciunt rem tenetur doloremque ipsam iure\nquis sunt voluptatem rerum illo velit"
                              }
                              ]';
BEGIN
INSERT INTO Prueba_ins_json
  SELECT * FROM JSON_TABLE( json_prueba, '$[*]'
                              columns(
                                userId, id, title, body
                              )
                            );

END; 

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

清风无影 2025-02-06 19:44:54

只需提供PATH最好与数据类型)子句,例如

INSERT INTO Prueba_ins_json
SELECT *
  FROM JSON_TABLE(json_prueba,
                  '$[*]' COLUMNS(
                                  userId INT           PATH '$.userId',
                                  id     INT           PATH '$.id',
                                  title  VARCHAR2(200) PATH '$.title',
                                  body   VARCHAR2(800) PATH '$.body'
                                 )
                  );

demo

eding> edit 强>

您可以或xmltable()以及apex_json.to_xmltype(),例如

INSERT INTO Prueba_ins_json
WITH t(jsCol) AS
(
 SELECT '<your_JSON_value>' 
   FROM dual 
)
SELECT userId, id, title, body
  FROM t,
       XMLTABLE('/json/row'
                PASSING APEX_JSON.TO_XMLTYPE(jsCol)
                COLUMNS 
                  userId INT           PATH 'userId',
                  id     INT           PATH 'id',
                  title  VARCHAR2(200) PATH 'title',
                  body   VARCHAR2(800) PATH 'body'
               )

Just need to provide PATH(preferably along with data types) clause such as

INSERT INTO Prueba_ins_json
SELECT *
  FROM JSON_TABLE(json_prueba,
                  '$[*]' COLUMNS(
                                  userId INT           PATH '$.userId',
                                  id     INT           PATH '$.id',
                                  title  VARCHAR2(200) PATH '$.title',
                                  body   VARCHAR2(800) PATH '$.body'
                                 )
                  );

Demo

Edit (as you're using DB 11g) :

You can alternatively use XMLTABLE() along with APEX_JSON.TO_XMLTYPE() instead such as

INSERT INTO Prueba_ins_json
WITH t(jsCol) AS
(
 SELECT '<your_JSON_value>' 
   FROM dual 
)
SELECT userId, id, title, body
  FROM t,
       XMLTABLE('/json/row'
                PASSING APEX_JSON.TO_XMLTYPE(jsCol)
                COLUMNS 
                  userId INT           PATH 'userId',
                  id     INT           PATH 'id',
                  title  VARCHAR2(200) PATH 'title',
                  body   VARCHAR2(800) PATH 'body'
               )
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文