从 Toad 导出时在数据集中包含 ROWID

Posted

技术标签:

【中文标题】从 Toad 导出时在数据集中包含 ROWID【英文标题】:Include ROWID in Dataset when Exporting from Toad 【发布时间】:2012-03-05 20:12:42 【问题描述】:

我正在尝试将数据集从 Toad 导出到 Excel(或文本分隔文件)。我需要ROWID 显示在结果文件中。

我在视图 >> Toad 选项 >> 数据网格 >> 数据中选择了“在可编辑网格中显示 ROWID”。

ROWID 显示在 Toad 模式浏览​​器的“数据”选项卡中。

当我从模式浏览器运行导出数据时;在 Dataset 选项卡下,ROWID 正在 SQL 语句中显示。

但是当我导出数据集时,我没有在结果(输出)文件中看到 ROWID

我正在运行 Toad 10.5.0.41。

关于我缺少什么的任何建议?

提前致谢,

马旺

【问题讨论】:

我刚刚想通了,所以我想我会与大家分享答案。单击查看/编辑查询,然后修改 SQL 查询,使 ROWID 具有别名,例如:SELECT ROWID as ROWID_COL, FIRST_COL FROM TABLE_NAME 当通过导出数据集按钮导出数据时,ROWID 将包含在结果文件中。我希望这会有所帮助。 只是好奇,为什么要导出 ROWID? @Jeffrey - 我被要求比较两个表(没有主键)的差异。我认为我可以通过ROWID 对表进行排序,以便匹配不同表中的列。但这行不通,因为表的行数不同。如果有人对如何解决这个问题有任何提示或想法,那么我将不胜感激。提前致谢。 ROWID 是指向表中特定行的内部指针。如果您要查询两个表,根据定义,每个 ROWID 将是不同的,您无法比较它们。至于比较方法:可能最简单的方法是计算每一行的哈希值,然后在两个表之间进行 FULL OUTER JOIN 以查找匹配和不匹配的行。 @JeffreyKemp - 我将尝试 FULL OUTER JOIN,但我不确定此时哈希对我有何帮助,因为我似乎找不到任何有助于区分行的值.在数据集中返回后,我使用ROWID 来识别行。感谢您的信息和建议,我会尽力跟进。 【参考方案1】:

为什么不将ROWID 显式添加到 SQL 语句中?

select rowid, t.*
from my_table t;

【讨论】:

那是完美的。我只是不确定在哪里进行更改。导出数据集按钮不允许修改 SQL 语句。我刚刚发现我可以直接从查看/编辑查询按钮修改导出数据集的 SQL 语句。感谢您的提示。 ROWID 需要一个别名,以便它可以显示在导出的数据/输出文件中,例如:select ROWID as ROWID_COL, t.* from MY_TABLE t; 这与 Toad 的导出数据集按钮特别相关。再次感谢您的建议。

以上是关于从 Toad 导出时在数据集中包含 ROWID的主要内容,如果未能解决你的问题,请参考以下文章

是否可以从Toad导出保存的密码

toad for oracle 更改表 ddl 导出

在 oracle 中导出脚本中的更改(使用 Toad ?)

将 mysql 表导出到 ms Access 表中的最快/安全方式

Navicat 导入,导出数据 etc

在Oracle中有个rowid和rownum,他们是一样的吗?有啥作用?大神求解!!!