从 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的主要内容,如果未能解决你的问题,请参考以下文章