C#.Net我正在使用OracleBulkCopy将数据复制到声明为提交时删除的全局临时表。所以当我使用OracleBulkCopy.WriteToServer(DataReader)时。它承诺我正在失去所有的数据。如何防止这一点?OracleBulkCopy自动提交
回答
OracleBulkCopy似乎不支持事务。自动提交永远不会很聪明,使用更容易控制的方式进行复制,例如使用批量插入。
OPEN z;
LOOP
FETCH z BULK COLLECT INTO z_array LIMIT z_array_size;
FORALL i IN 1..z_array.COUNT
INSERT INTO t2 VALUES z_array(i);
EXIT WHEN z%NOTFOUND;
END LOOP;
你的意思是说生成动态插入语句。我们已经在使用它,只是想尝试OracleBulkCopy,因为我认为它可能会更快。 – 2011-03-15 14:32:03
是的,但使用如图所示的批量插入。 OracleBulkCopy可能会快一点,也许可能不会。我不确定。大容量插入表现非常好。 – 2011-03-15 20:26:21
无论如何将全局临时表声明为在使用.NET时提交时删除不是好主意。
更好的做法是在做任何你想做的事情之前从gtt中删除,并让它在提交之后保持原样。调试也变得更容易。
@bernd_K:表现最明智的做法是从这样的表中删除。忘记数据并通过提交清理。在这种情况下,数据只是以非常有效的方式“蒸发”。 – 2011-03-12 17:21:59
@bernd_K:如果我们不使用提交时删除,则会出现问题,因为多个线程同时访问同一个全局临时表。 – 2011-03-15 14:31:06
和所有线程使用相同的oracle会话? – 2011-03-15 15:25:19
- 1. OracleBulkCopy没有自动提交
- 2. jqTransform自动提交
- 3. collection_radio_button自动提交?
- 4. 自动提交CGridView
- 5. 不能提交自动提交集
- 6. AnguarJS自动提交表单
- 7. 自动提交到cfm
- 8. 自动提交表单
- 9. Ajax自动表单提交
- 10. VisualHG中的自动提交
- 11. 如何自动提交后?
- 12. 自动提交表格
- 13. jpaTemplate如何自动提交...?
- 14. iPhone - 自动化Appstore提交
- 15. Javascript如何自动提交
- 16. Oracle JDBC自动提交
- 17. 自动提交表格
- 18. JavaScript - 自动提交表单
- 19. ASP.NET自动提交问题
- 20. 自动提交表格js
- 21. 自动提交表格
- 22. 自动提交表单(cURL)
- 23. Javascript自动表单提交
- 24. 提交时自动部署
- 25. JDeveloper ADF:CreateInsert自动提交?
- 26. Galera集群 - 自动提交
- 27. 使git自动提交
- 28. SolrJ:禁用自动提交
- 29. 自动提交文件
- 30. 自动触发提交
你能告诉,你为什么要使用全局临时表而不是常规表吗? – 2011-03-12 18:59:59
@bernd_k因为现有的应用程序都以相同的方式工作。将数据从源复制到临时表并运行存储过程将数据从临时表移动到永久。这是通过使用中间层完成的,其中多个线程同时访问全局临时表,因此使用提交时删除,因此不会有2个会话共享数据。 – 2011-03-15 14:29:58