2

我正在尝试将表数据从 dev box db 复制到 uat db,这是 2 个不同的数据库。我正在尝试使用 toad。所有连接细节都是正确的,但它不起作用并引发以下错误。

[错误] 执行 (12:1): ORA-00900: 无效的 SQL 语句

这就是我正在尝试的

copy from abc/cde@//abc.abc.com:1521/devbox to abc/cde@//abc.abc.com/uatbox 
  INSERT TOOL_SERVICE_MAPPING (*) 
  USING (SELECT * FROM TOOL_SERVICE_MAPPING)
4

3 回答 3

6

如果您的表没有大量行,您可以使用 Toad 的导出函数:它为每一行创建一个插入语句。然后,您可以在目标数据库中运行这些语句来重新创建表的数据。

以下是步骤:

A. 在目标数据库中创建表的副本

  1. 在模式浏览器窗口中的源数据库中单击要复制的表,在窗口右侧选择“脚本”选项卡:您将找到重新创建表的脚本;复制这个脚本
  2. 将脚本粘贴到目标数据库的新 SQL 编辑器窗口中并运行它。这应该创建新表

B. 复制新表中的数据

  1. 在模式浏览器窗口中右键单击源数据库中的表名
  2. 从上下文菜单中选择“导出数据”
  3. 编写导出查询的“ where ”语句(如果要复制整个表,请将其留空)
  4. 选择目的地:剪贴板
  5. 单击“确定”(现在插入语句存储在剪贴板中)
  6. 在目标数据库的新 SQL 编辑器窗口中粘贴插入语句
  7. 将语句作为脚本运行(快捷键 F5)
于 2013-09-14T14:41:32.097 回答
4

copy是 SQL*Plus 命令,而不是 SQL 语句。如果 Toad 实现了特定的 SQL*Plus 命令(它确实实现了许多更简单的命令),我会感到惊讶。如果要使用该copy命令,则需要使用 SQL*Plus,而不是 Toad。

如果要使用 Toad,则需要使用 SQL 语句来复制数据。您可以在目标数据库中创建一个指向源数据库的数据库链接,然后

INSERT INTO tool_service_mapping
  SELECT *
    FROM tool_service_mapping@<<db link to source database>>
于 2013-09-13T20:43:43.947 回答
1

到目前为止我经历过的最简单和最无错误的方法是:数据库->比较->模式

它看起来并不太复杂(很多复选框),但是您勾选了需要在空数据库中创建的对象的复选框,并且在比较结束时您最终会得到包含所有对象(触发器、视图、序列)的 SQL 脚本, 包)您选择的(复选框)。

我清楚地看到生成的 sql 脚本中的所有表、触发器、数据等,甚至可以勾选这些我不想创建的(如果有的话)......在执行脚本之前,TOAD 要求您确认您正在运行哪个数据库脚本 - 救了我几次......虽然它看起来很笨拙,但它工作得很好。

我有大约 200 个表,我不知道这是否适合大型数据库。

于 2016-07-14T10:15:04.807 回答