我需要将excel文件中的100,000行数据加载到我使用" on commit preserve rows"创建的临时表中。但不知何故,由于会话问题,最有效的方法似乎没有填充临时表?
我使用Toad导入表数据,它显示导入了x个记录。但是当我从临时表中选择时,它是空的。然后我生成了一堆插入脚本并将它们保存在notepad.sql中,并使用@ / script / location / notepad.sql从toad编辑器调用它并点击F5。它运行并显示插入了多少条记录。临时表再次以某种方式显示为空。所以,我决定在编辑器中手动运行一个随机插入脚本,它出现在临时表中。我认为不起作用的方法不被认为是同一个会话?
我没有尝试过SQLLDR,但我认为从我尝试过的方法判断它是行不通的。有人可以证实吗?我无法访问SQLLDR,所以我不知道。
有没有让这个工作?我无法手动运行插入脚本。这将耗费时间,Toad不能同时使用那么多脚本。
答案 0 :(得分:0)
使用ON COMMIT PRESERVE ROWS
创建的Oracle临时表是特定于会话的,因此放入其中的数据仅在单个会话中以及该会话期间可见。 Toad可能正在为每个窗口创建单独的会话,因此从一个窗口/会话填充的数据在另一个窗口/会话中是不可见的。您可以运行插入脚本然后再选择数据这一事实表明,如果两个操作都是从同一个窗口完成的,则可能就是这种情况。如果您使用SQL * Loader加载表,我希望您看到相同的行为,因为加载将在一个会话中运行,并且会话终止时数据将被丢弃。祝你好运。