Informix 中的数据库别名

发布于 2024-07-11 06:58:45 字数 265 浏览 6 评论 0原文

在 Informix 中,我可以运行使用其他数据库的 SQL 语句:

INSERT INTO other_db:mytable ...

我想“联合”这两个数据库,但我想“一步一步”进行。

首先我想将所有数据从 other_db 移动到主数据库 并创建别名 other_db = main_database。 这样我就会有 是时候从所有语句中删除“other_db:”了。

如何设置数据库别名?

In Informix I can run SQL statement that use other database:

INSERT INTO other_db:mytable ...

I would like "unite" both databases, but I would like do it "step by step".

At first I want to move all data from other_db to main database
and make alias that other_db = main_database. This way I will have
time to remove "other_db:" from all statements.

How can I set database alias?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

摘星┃星的人 2024-07-18 06:58:45

我不知道有任何方法为整个数据库创建别名。

但是,您可以跨数据库创建同义词,格式如下:

DATABASE old_db;
CREATE SYNONYM table_name FOR new_db:table_name;

如果在移动时为每个表创建这样的别名,您应该能够获得相同的效果。 重新定位所有表后,您可以删除对 old_db 的所有引用。

您可以查询 systables 来识别 old_db 中的真实表,即:

DATABASE old_db;
SELECT tabname, nrows
  FROM systables
  WHERE tabtype = "T"
    AND tabid > 99 -- exclude internal tables

行计数当然取决于合理的当前更新统计信息。

希望有帮助。

I'm not aware of any method for creating an alias for the whole database.

However, you can create synonyms across databases, in the form:

DATABASE old_db;
CREATE SYNONYM table_name FOR new_db:table_name;

If you create such an alias for each table as it's moved, you should be able to get the same effect. Once all tables have been relocated, you can remove all references to old_db.

You can query systables to identify real tables in old_db, ie:

DATABASE old_db;
SELECT tabname, nrows
  FROM systables
  WHERE tabtype = "T"
    AND tabid > 99 -- exclude internal tables

The row-count will of course depend on reasonably current UPDATE STATISTICS.

Hope that helps.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文