【问题标题】:Inserting several rows in table [duplicate]在表中插入几行[重复]
【发布时间】:2023-03-06 13:27:02
【问题描述】:

我可以使用以下代码在表格中插入一行:

INSERT INTO SCHEME.TABLE
    (col1, col2)
VALUES ('val1', 'val2');

我需要在一个表中插入几行。

要插入几行,我试过了:

INSERT INTO SCHEME.TABLE
    (col1, col2)
VALUES ('val1', 'val2'),
VALUES ('val1', 'val2');

INSERT INTO SCHEME.TABLE
    (col1, col2)
VALUES ('val1', 'val2'),('val1', 'val2');

和其他一些变化。他们都没有工作:(

【问题讨论】:

  • 据我记得在 Oracle 中,您不能插入多个文字行。只需运行多个 SQL INSERTs。或者,您可以使用子查询而不是 VALUES
  • @TheImpaler 难以置信:)
  • 从我上面链接的问题中查看最受好评(不被接受)的答案
  • 最受好评的答案提供了比多个插入组合更长的 SQL 语句。一线希望是它作为单个语句执行。

标签: sql oracle


【解决方案1】:

您需要为每一行插入一个 INSERT 语句,例如:

INSERT INTO SCHEME.TABLE (col1, col2) VALUES ('val1', 'val2');
INSERT INTO SCHEME.TABLE (col1, col2) VALUES ('val3', 'val4');

或者您可以使用 INSERT ALL 构造(但您仍然需要每次重复表名,并且您需要使用某种选择来完成您的语句):

INSERT ALL
    INTO SCHEME.TABLE (col1, col2) VALUES ('val1', 'val2')
    INTO SCHEME.TABLE (col1, col2) VALUES ('val3', 'val4')
SELECT 1 FROM DUAL;

【讨论】:

  • 如果我有数千行要插入,并且我从 python 进程发送它们,多个 INSERT 操作会比重复问题的解决方案慢吗?
  • 刚刚发现 Oracle 中的 « INSERT ALL » 语句,并相应地更新了我的答案
猜你喜欢
  • 2021-04-03
  • 2018-09-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多