Oracle 如何使用SQL Developer为完整表数据生成单insert语句?

Oracle 如何使用SQL Developer为完整表数据生成单insert语句?,oracle,oracle-sqldeveloper,sql-insert,Oracle,Oracle Sqldeveloper,Sql Insert,我的Oracle表中有一个包含1000000条记录的表 我可以使用SQLDeveloper生成1000000条insert语句作为脚本 但是,要运行此脚本,需要花费大量时间 是否有任何方法可以为表中的所有值生成一条insert语句,我知道运行该语句不会花费太多时间。最简单的方法是创建一个匿名PL/SQL块: begin --add 1 million inserts here commit; end; / 这消除了几乎所有的网络往返。这不是最有效的解决方案,但这是一个简单的改变

我的Oracle表中有一个包含1000000条记录的表

我可以使用SQLDeveloper生成1000000条insert语句作为脚本

但是,要运行此脚本,需要花费大量时间


是否有任何方法可以为表中的所有值生成一条insert语句,我知道运行该语句不会花费太多时间。

最简单的方法是创建一个匿名PL/SQL块:

begin
    --add 1 million inserts here
    commit;
end;
/
这消除了几乎所有的网络往返。这不是最有效的解决方案,但这是一个简单的改变,非常接近最有效的解决方案

创建这么大的匿名块可能会导致错误,如
PLS-00123:程序太大(Diana节点)
。如果发生这种情况,请将程序分解为 请选择较小的块,然后重试

是否有任何方法可以为表中的所有值生成一条insert语句,我知道运行该语句不会花费太多时间

您可以使用语句

INSERT ALL
语句用于使用单个INSERT语句添加多行。可以使用一个SQL命令将行插入到一个表或多个表中

比如说,

INSERT ALL
  INTO suppliers (supplier_id, supplier_name) VALUES (1000, 'IBM')
  INTO suppliers (supplier_id, supplier_name) VALUES (2000, 'Microsoft')
  INTO suppliers (supplier_id, supplier_name) VALUES (3000, 'Google')
SELECT * FROM dual;

这相当于3个INSERT语句。

以后您想对脚本做什么?我想在另一个数据库中运行脚本,以便执行所有插入操作。我无法使用SQL Developer生成这种语法。我可能必须编辑并删除1000000 insert语句中语法的起始部分