Sybase ASE 15.7 - 如何将两个数据库中的对象合并到一个数据库中?

Posted

技术标签:

【中文标题】Sybase ASE 15.7 - 如何将两个数据库中的对象合并到一个数据库中?【英文标题】:Sybase ASE 15.7 - How can I merge objects from two databases into one single database? 【发布时间】:2016-12-10 18:57:48 【问题描述】:

我有一个使用 Sybase ASE 15.7 作为底层数据库的应用程序。在过去,建议拆分表并将它们放置在两个不同的数据库中,比如 db1 和 db2。我知道没有命名冲突,这意味着我可以将对象从 db1 迁移到 db2,反之亦然。

迁移数据的最佳选择是什么。我有 SQL 脚本来在 remeining 数据库中创建我需要的所有对象。有没有比使用这个更好的选择:

1> INSERT INTO db2..tblA
2> SELECT * FROM db1..tblA
3> GO

有些桌子非常大。所以我需要注意事务日志没有被填满。

BCP 也可能是这样的选项:

bcp db1..tblA out tblA.save -U... -P....
bcp db2..tblA in tblA.save -U... -P....

是否有可用的工具可以连接到两个数据库并可以处理这样的事情?

也许有人有想法。提前致谢。

最好的问候

詹斯

【问题讨论】:

【参考方案1】:

为防止日志被填满,您可以执行未记录的操作。 如果这不可能,您可以在复制过程中将 DB 选项设置为截断日志检查点,但第二种方法可能不足以确保日志不会耗尽。 如果使用未记录的操作,则在完成后应进行完整的数据库转储以创建新基线的备份。 如果在离线维护窗口之外进行未记录的操作可能会很危险。

在检查点截断(执行以下操作,然后执行检查点)

要打开/关闭截断模式,请使用

使用主人;

sp_dboption , 'trunc log on chkpt', [false|true];

在数据库上允许 BCP/select INTO(执行以下操作,然后执行检查点)

使用主人;

sp_dboption , 'select into/bulkcopy/pllsort ', [false|true];

执行检查点

在数据库“dbname”中使用检查点。

使用“数据库名称”;

检查点;

BCP 选项

如果您选择使用 BCP,请确保使用快速 BCP。快速 BCP 未记录。

确保使用快速 BCP 的规则在 http://infocenter.sybase.com/help/index.jsp?topic=/com.sybase.infocenter.dc30191.1570100/doc/html/san1367605064460.html 中指定。

您可以分两个阶段执行此操作,一个“提取”(输出)运行,然后一个“加载”运行。命令看起来像这样。

SYBASE/$SYBASE_OCS/bin/bcp $DB1NAME..$TABNAME 输出 $DUMPDIR/$DB1NAME/$TABNAME.TXT -c -U$SQLUSER -P$USERPASS -S$SERVER1NAME

SYBASE/$SYBASE_OCS/bin/bcp $DB1NAME..$TABNAME 在 $DUMPDIR/$DB1NAME/$TABNAME.TXT -c -U$SQLUSER -P$USERPASS -S$SERVER1NAME

需要在数据库中设置选择进入/批量复制数据库选项才能使其工作。

您需要在此操作后转储数据库。

未记录的操作 - 选择进入

由于您可以从同一服务器中访问两个数据库,因此您应该看看使用 select into。

“选择进入”是一个未记录的操作。

select into 语句的目标表不存在,因此您需要使用 sp_rename 移动原始目标表,然后使用查询中的两个源表运行 select。

需要为此数据库设置选择进入/批量复制数据库选项。

您需要在此操作后转储数据库。

由于 Union 声明,这可能会很慢。此外,联合也不是一个好的选择,因为行不是唯一的。

索引

一般来说,如果目标表上有一个大索引(尤其是集群索引),那么在复制过程中删除它并在之后重新创建它可能会更有效。

【讨论】:

以上是关于Sybase ASE 15.7 - 如何将两个数据库中的对象合并到一个数据库中?的主要内容,如果未能解决你的问题,请参考以下文章

sybase ase 怎样修改表的所有者

如何将 Sybase ASE smalldatetime/datetime/bigdatetime 转换为标准格式

sybase15.7自定义安装图形界面化管理工具怎么装

Propel 1.6 从 Sybase 15.7 生成模式有一些麻烦

如何使用 Kafka Connect for Sybase ASE 数据库实现变更数据捕获 (CDC)?

Sybase插入一个空格代替空字符串''