Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 向表中插入行的限制(Oracle)_Sql_Oracle - Fatal编程技术网

Sql 向表中插入行的限制(Oracle)

Sql 向表中插入行的限制(Oracle),sql,oracle,Sql,Oracle,在OraclePL/sql中,我连接了几个表并插入到另一个表中,这将导致数千个表或数百万个表。可以插入为 insert into tableA select * from tableB; 是否会因为行数而有失败的机会? 或者,如果没有更多记录,是否有更好的方法插入值 提前感谢好吧,机器内部的一切都是有限的,因此如果选择返回太多行,它肯定不会工作(尽管必须有任何行,但数量取决于您的存储和内存大小、您的操作系统以及可能的其他因素) 如果您认为您的查询可以超过限制,那么分批执行插入,并在每批之后提交

在OraclePL/sql中,我连接了几个表并插入到另一个表中,这将导致数千个表或数百万个表。可以插入为

insert into tableA
select * from tableB;
是否会因为行数而有失败的机会? 或者,如果没有更多记录,是否有更好的方法插入值


提前感谢

好吧,机器内部的一切都是有限的,因此如果选择返回太多行,它肯定不会工作(尽管必须有任何行,但数量取决于您的存储和内存大小、您的操作系统以及可能的其他因素)


如果您认为您的查询可以超过限制,那么分批执行插入,并在每批之后提交。当然,您需要意识到,如果在50%的插入中,您决定需要取消该过程,您必须采取一些措施(因为
回滚在这里将不起作用)。

好的,机器内部的一切都是有限的,因此如果该选择返回太多行,它肯定不会起作用(尽管必须有任何行,但行数取决于您的存储和内存大小、操作系统以及其他因素)


如果您认为您的查询可以超过限制,则分批插入,并在每批之后提交。当然,您需要注意,如果在50%的插入中您决定需要取消该过程,则必须执行某些操作(因为
回滚
在此处将不起作用).

好吧,机器内部的所有内容都是有限的,因此如果选择返回太多行,它肯定不会工作(尽管必须有任何行,但行数取决于您的存储和内存大小、操作系统以及其他因素)


如果您认为您的查询可以超过限制,则分批插入,并在每批之后提交。当然,您需要注意,如果在50%的插入中您决定需要取消该过程,则必须执行某些操作(因为
回滚
在此处将不起作用).

好吧,机器内部的所有内容都是有限的,因此如果选择返回太多行,它肯定不会工作(尽管必须有任何行,但行数取决于您的存储和内存大小、操作系统以及其他因素)


如果您认为您的查询可以超过限制,则分批插入,并在每批之后提交。当然,您需要注意,如果在50%的插入中您决定需要取消该过程,则必须执行某些操作(因为
回滚
在此处将不起作用).

我建议的步骤不同,因为使用SQL或PL/SQL在一条SQL语句中加载更多数据时,性能通常会提高:

  • 我建议您检查回滚段(RBS段)的大小,并可能为此类交易在线提供一个更大的专用段
  • 对于插入,您可以说“回滚消耗量”=“插入的数据量”。您可以从数据库统计信息中了解典型的行宽(请参阅
    analyze table table b compute statistics For table For all columns For all index
  • 确定每次迭代可以插入多少行
  • 在大插入和提交中插入此数量的数据
  • 重复一遍
  • insert通常不存在锁定问题,因为无法锁定尚未存在的内容:-)

  • 当在分区表上运行时,您可能需要考虑不同的场景,允许(子)分区将工作分配在一起。通过从文本文件加载来使用SQL*Loader时,您可能也会使用不同的方法,例如直接路径,它在不使用SQL引擎的情况下向数据库中添加预格式化数据块,而不是让RDBMS处理SQL。

    我建议的步骤不同,因为使用SQL或PL/SQL在一条SQL语句中加载更多数据时,性能通常会提高:

  • 我建议您检查回滚段(RBS段)的大小,并可能为此类交易在线提供一个更大的专用段
  • 对于插入,您可以说类似于“回滚消耗量”=“插入的数据量”。您可以从数据库统计信息中了解典型的行宽(请参阅用户\分析表table后的表b计算所有索引的所有列的表统计信息
  • 确定每次迭代可以插入多少行
  • 在大插入和提交中插入此数量的数据
  • 重复一遍
  • insert通常不存在锁定问题,因为无法锁定尚未存在的内容:-)

  • 当在分区表上运行时,您可能需要考虑不同的场景,允许(子)分区将工作分配在一起。通过从文本文件加载来使用SQL*Loader时,您可能也会使用不同的方法,例如直接路径,它在不使用SQL引擎的情况下向数据库中添加预格式化数据块,而不是让RDBMS处理SQL。

    我建议的步骤不同,因为使用SQL或PL/SQL在一条SQL语句中加载更多数据时,性能通常会提高:

  • 我建议您检查回滚段(RBS段)的大小,并可能为此类交易在线提供一个更大的专用段
  • 对于插入,您可以说类似于“回滚消耗量”=“插入的数据量”。您可以从数据库统计信息中了解典型的行宽(请参阅用户\分析表table后的表b计算所有索引的所有列的表统计信息)
  • 确定每次迭代可以插入多少行
  • 在大插入和提交中插入此数量的数据
  • 重复一遍
  • insert通常不存在锁定问题,因为无法锁定尚未存在的内容:-)
  • 当在分区表上运行时,您可能需要考虑不同的场景,允许(子)分区将工作分配在一起。当通过从文本文件加载来使用SQL*Loader时,您可能也会使用不同的方法,例如

    insert into new_table_name select * from old_table_name where row_num<10000;