如this answer所示,我可以使用jailer 将数据子集导出到SQL 脚本中。
但在我的情况下,我还想完全排除某些表,特别是在与我要提取的表相关的表上。
那么我如何排除不需要的表呢?
我正在观看由 Brent Ozar ( https://youtu.be/U_Kle3gKaHc )完成的一个 7 年前的网络研讨会,并听说当时推荐了几个项目。
所有这些仍然需要使用/考虑,还是有更新的东西取代它们?
我刚刚下载了 First Responder 工具包。遗憾的是,“sp_AskBrent”未包含在下载中。我怎样才能得到它来完成套件?
我在 Ubuntu 上安装了 Squirel SQL,并下载了一个 MySQL 驱动程序并将其放入lib
Squirel 文件夹的文件夹中。然后我在配置Squirel MySQL驱动的时候在“extra class”选项卡中选择了这个驱动。连接到数据库并查看数据有效,但是当我尝试重命名 Squirel 中的列时,它建议使用特定于 Oracle 的代码而不是特定于 MySQL 的变体。我做错了什么?Squirel 的重构工具不支持 MySQL 或者我如何配置它以正确重命名列?PhpMyAdmin 自动很好地解决了这个任务。
这是当我在“修改列”菜单中单击“显示 SQL”时显示的 SQL:
ALTER TABLE some_column ALTER COLUMN "one_name" RENAME TO "another_name";
这是行不通的。mySQL 以不正确的语法错误回答。
重现点击的确切顺序是:右键单击左侧面板中的表格,然后在上下文菜单中“重构”->“列”->“修改列”。然后选择列并编辑名称。按钮“执行”导致不正确的语法错误,“显示 sql”给了我这个 sql。
我们重构了旧数据库。一些表被删除,一些表被拆分成 2 个新表等。所以现在我们有了一个全新的数据库模式,它与旧的有很多不同。有人编写了一个将数据从旧数据库迁移到新数据库的应用程序。
我正在寻找方法/技术来比较数据迁移的正确性。是否有任何标准或常用的方法来完成这种比较?
经过一些研究,我找到了一种方法——为旧数据库的每个表创建一个 VIEW,即我将尝试以旧表(旧模式)的格式在 VIEW 中表示数据,然后将旧表中的数据与视图中的数据。
我对其他方式感兴趣。
我正在使用 SQL Server 2008 Express 版本,并且我已经处理了两天的问题,该问题似乎是运行查询时的交叉连接。
我想直观地知道每个连接操作返回的集合。
有什么工具可以给你中间的查询结果吗?我在谷歌上找不到。
我用书中最古老的技巧解决了这个问题,在加入之前手动运行查询以查看交叉连接问题到底发生在哪里。并发现有一个映射数据库为一个连接发送了 3 个结果,而不是一个(因为它需要两个条件来实现正确的内部连接,而不是一个)。
我们公司选择使用IBM 的 InfoSphere Data Architect (IDA)来对我们的数据仓库和数据集市进行数据架构设计。
数据架构师最初为我们的集市设计了几个“可重复使用”的表。换句话说,像 CUSTOMER_DIMENSION 这样的表可能在结构上驻留在多个集市中。每个集市都有自己的数据副本。
我相信为了让事情变得简单,他们在他们在 IDA 中称为 DB2ADMIN 的相同“模式”中定义了所有表(维度和事实)。
由于集市只能有一个事实表,我必须查看表与事实表的关系图,以确定应为特定集市将哪些表生成到 DDL 文件中。截至目前,每个集市都物理地驻留在一个数据库中自己的模式中。因此,我不仅必须手动选择用于 DDL 生成的表,而且还必须手动调整每个 DDL 文件以覆盖架构。这并不理想,因为它是一个容易出错的过程。
有没有办法有一个表的“基本”定义,然后将它或任何东西继承到 IDA 中的真实表中?我想要做的是在工具中拥有与我们在服务器上拥有的相同的模式定义。我只希望适用的表显示在每个模式中(作为集市应该是 - 一个事实,它只关心它的维度表)。但是为了节省工作,我更希望表定义位于一个地方。因此,架构师可以进行一项更改,但我们可以更轻松地生成我们的表格。
这可能吗?那里有 IDA 专家吗?
是否可以在查询SQuirreL SQL中设置命名参数?
我有以下示例查询。
variable pStartDateBegin VARCHAR2(10);
variable pEndDateFinish VARCHAR2(10);
begin
select '01-01-2000', '30-11-2011'
into :pStartDateBegin,:pEndDateFinish
from dual;
end;
-- SELECT :pStartDateBegin,:pEndDateFinish FROM dual;
WITH EXAMPLE
AS
(
SELECT OWNER,TABLE_NAME FROM DBA_TABLES T
WHERE T.LAST_ANALYZED BETWEEN :pStartDateBegin AND :pEndDateFinish
)
SELECT * FROM EXAMPLE;
当我使用 TOAD 运行此查询时。它运行成功。
XXXX rows selected.
Time End: 06.12.2011 12:05:37
Elapsed Time for Script Execution: 3 secs
在 SQL Developer 中,我收到以下错误。
Error report:
ORA-06550: line 12, column 2:
PLS-00103: Encountered the symbol "WITH"
06550. 00000 - "line %s, column %s:\n%s"
*Cause: Usually a PL/SQL compilation error.
*Action:
在 sqlplus 中,我有类似的错误。
ATILLA@DENEME > @WithAndBindVariablesExample.sql
WITH EXAMPLE
*
ERROR at line 12:
ORA-06550: line 12, column 1:
PLS-00103: Encountered the symbol "WITH"
如果我使用以下符号
variable pStartDateBegin VARCHAR2(10);
variable pEndDateFinish VARCHAR2(10);
exec :pStartDateBegin := '01-01-2000';
exec :pEndDateFinish := '30-11-2011';
WITH EXAMPLE
AS
(
SELECT OWNER,TABLE_NAME FROM DBA_TABLES T
WHERE T.LAST_ANALYZED BETWEEN to_date(:pStartDateBegin,'DD-MM-YYYY') AND to_date(:pEndDateFinish,'DD-MM-YYYY')
)
SELECT * FROM EXAMPLE;
它成功运行所有三个工具。
看来我缺乏这方面的基本知识。我想要有关此行为、解释等的教程的指针。