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



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

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

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....

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

也许有人有个主意。提前谢谢。

向致以最良好的问候

Jens

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

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

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

使用master;

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

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

使用master;

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

执行检查点

要在数据库"dbname"中使用检查点。

使用"dbname";

检查站;

BCP选项

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

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

您可以分两个阶段来完成:一个是"提取"(out)运行,然后是"加载"in运行。命令看起来像这样。

SYBASE/$SYBAS_OCS/bin/bcp${DB1NAME}${TABNAME}out$DUMPDIR/$DB1NAME/${TABNAME}.TXT-c-U$SQLUSER-P$USERPASS-S$SERVER1NAME

SYBASE/$SYBAS_OCS/bin/bcp${DB1NAME}${TABNAME}在$DUMPDIR/$DB1NAME/${TABNAME}.TXT-c-U$SQLUSER-P$USERPASS-S$SERVER1NAME 中

需要在数据库中设置select into/bulk copy DB选项,这样才能工作。

此操作之后,您将需要转储数据库。

未记录操作-选择进入

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

"select into"是一个未标记的操作。

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

需要为数据库设置select into/bulk copy DB选项,这样才能工作。

此操作之后,您将需要转储数据库。

由于欧盟的声明,这可能会很慢。另外,并集不是一个好的选择,因为行不是唯一的。

索引

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

相关内容

  • 没有找到相关文章

最新更新