日期:2014-05-18  浏览次数:20381 次

急求数据库两表同步的问题
数据库是SQL2000,我的问题如下:

现状:
        数据库   A   中   有数据表   T_A,T_B   ...   T_Z   。有程序每天不断向这些表中写入当天的实时数据。

需求:
        由于我需要对当天(仅当天)情况做分析统计,由于   表   T_A,T_B   ...   T_Z     内数据太多。我想仅将当天的数据同步复制到另一个表(最好是另一个库)中,再针对复制的表进行分析统计。请问我该如何实现?

要求:
        数据最好被同步复制(数据写入同时被复制到外表中);也可以定时复制( <5分钟)。被复制出来的表和库没有要求,但需要效率高且资源耗费尽量小。

我该如何实现?触发器么?我是初学者,请大家的回答尽量详细,谢谢大家。

------解决方案--------------------
我想仅将当天的数据同步复制到另一个表(最好是另一个库)中,再针对复制的表进行分析统计。

如果只是作分析,没必要实时同步吧?

可以考虑使用bcp工具,然后通过作业执行来达到数据同步


------解决方案--------------------
使用 bcp 和 BULK INSERT
bcp 命令行提示实用工具将 Microsoft&reg; SQL Server&#8482; 数据复制到某个数据文件或从某个数据文件复制数据。该实用工具最常用于将大量数据从其它程序(通常是另一种数据库管理系统 (DBMS))传输到 SQL Server 表中。数据首先从源程序导出到数据文件,然后使用 bcp 将数据从该数据文件导入到 SQL Server 表。另外,bcp 还可以用来将数据从 SQL Server 表传输到数据文件中,以供其它程序使用。例如,可以将数据从 SQL Server 实例复制到某个数据文件。而其它程序可以从该数据文件中导入数据。


说明 bcp 实用工具是用 ODBC 大容量复制应用程序接口 (API) 编写的。而早期版本的 bcp 实用工具是用 DB-Library 大容量复制 API 编写的。


使用 BULK INSERT 语句,还可以将数据从数据文件传送到 SQL Server 表。然而,BULK INSERT 语句不能将数据从 SQL Server 实例大容量复制到数据文件。BULK INSERT 语句使您得以利用 Transact-SQL 语句而不是命令提示符来实现 bcp 实用工具的功能,将数据大容量复制到 SQL Server 实例。

还可以通过编写程序,使用大容量复制 API 在 SQL Server 和数据文件之间大容量复制数据。大容量复制 API 可以在基于 ODBC、OLE DB、SQL-DMO 和 DB-Library 的应用程序中使用。

触发器执行
所有大容量复制操作(BULK INSERT 语句、bcp 实用工具和大容量复制 API)均支持大容量复制提示 FIRE_TRIGGERS。在将行复制到表的大容量复制操作中,如果指定了 FIRE_TRIGGERS,则对大容量复制操作所插入的所有行均执行在目的表上定义的 INSERT 和 INSTEAD OF 触发器。默认情况下,大容量复制操作不执行触发器。

对于指定了 FIRE_TRIGGERS 的大容量复制操作,需考虑以下事项:

通常在日志中记录最少的大容量复制操作将被完整地记录下来。


触发器对大容量复制操作中的每个批处理触发一次。传送到触发器的 inserted 表包含该批处理插入的所有行。只有当大容量复制到带有 INSERT 和 INSTEAD OF 触发器(这两种触发器支持多行插入)的表时,才应指定 FIRE_TRIGGERS。


插入触发器生成的结果集不返回执行大容量复制操作的客户端。
------解决方案--------------------
语法
bcp {[[database_name.][owner].]{table_name | view_name} | "query "}
{in | out | queryout | format} data_file
[-m max_errors] [-f format_file] [-e err_file]
[-F first_row] [-L last_row] [-b batch_size]
[-n] [-c] [-w] [-N] [-V (60 | 65 | 70)] [-6]
[-q] [-C code_page] [-t field_term] [-r row_term]
[-i input_file] [-o output_file] [-a packet_size]
[-S server_name[\instance_name]] [-U login_id] [-P password]
[-T] [-v] [-R] [-k] [-E] [-h "hint [,...n] "]



------解决方案--------------------
触发器也可以实现啊,在插入之后向同步表进行插入,,,,
或者两个插入语句分别插入表,一个表进行每天定时统计和清理
------解决方案--------------------
建个用视图也可以吧