sql server 表部分数据 导出 导入,该怎么解决

sql server 表部分数据 导出 导入
我看了N多人问过的这类问题的帖子了,但是比较郁闷的是我还没解决
要求是将SQL SERVER中的某表中的一部分符合操作员输入条件的数据导出,然后拷贝到其他机器上导入,当然前提条件是用程序实现。
原来是直接备份整个库的,现在库越来越大,备份时间越来越长,所以需要修改。
先假设是用SQL SERVER -》》ACCESS-》》SQL SERVER

有人说用TBatchMove,但是BDE要配,说实话这个我真不会用BDE Administrator配ACCESS,试了几次都连不上。

有人说用ADODataSet1.SaveToFile();ADODataSet1.LoadFromFile();查了下又发现有说它是将数据文件先全提到内存然后操作的。我要操作的数据表很大,可能达到上G,这。。。。。。。。

http://topic.csdn.net/t/20050113/15/3723113.html 说 insert into OPENROWSET('Microsoft.Jet.OLEDB.4.0','C:\db.mdb';'admin';'', Test) select * from Test where …… 试了下又报类型错误。我用的.mdb是用DTS从SQL SERVER的表导出的,字段类型应该不会错啊。。。去掉WHERE一样错
使用了的字段类型包括int、varchar、image、datetime

谁还有其他方法?或帮我改良下上面的方法。。。
如果用while not ADOQuery1.Eof do..... 这样一条条操作会不会效率太低?

------解决方案--------------------
建议写一个自己专门使用的数据交换程序(供用户使用也可)。

功能:
1、方式选择:sql导入access;access导入sql
2、用覆盖方式、追加方式还是混合方式?
3、每次生成的目标文件为文本文件,但该文件由你定义数据格式(基本的信息:表名、字段名都必须包括)

这种数据交换程序,其好处是针对性强,可允许导入/导出少量字段(对编程的要求比较高),缺点是速度不是很理想
------解决方案--------------------
将数据从查询复制到数据文件
bcp 实用工具使您得以将 Transact-SQL 语句的结果集复制到数据文件中。该 Transact-SQL 语句可以是任何可返回结果集的有效语句,例如分布式查询或联接多个表的 SELECT 语句。例如,若要将所有作者的姓名从 pubs 数据库的 authors 表复制到 Authors.txt 文件,并按姓氏排序,可在命令提示符下执行以下命令:

bcp "SELECT au_fname, au_lname FROM pubs..authors ORDER BY au_lname" queryout Authors.txt -c -Sservername -Usa -Ppassword

如果要确保数据的原有顺序在数据文件中得以保留,则应从查询大容量复制数据;从表或视图大容量复制数据时,不能保证数据写入数据文件的顺序。在数据文件中保留数据顺序使您得以在将数据从数据文件大容量复制回表中时,可以利用 ORDER 提示。使用 ORDER 提示可以显著提高大容量复制的性能。有关更多信息,请参见优化大容量复制性能。

如果 Transact-SQL 语句返回多个结果集(例如指定 COMPUTE 子句的 SELECT 语句,或执行包含多个 SELECT 语句的存储过程),则只复制第一个结果集而忽略随后的结果集。


bcp 实用工具
bcp 实用工具在 Microsoft® SQL Server™ 2000 实例和数据文件之间以用户指定的格式复制数据。

语法
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]"]

参数database_name

指定的表或视图所在数据库的名称。如果未指定,则为用户默认数据库。

owner

表或视图所有者的名称。如果执行大容量复制操作的用户拥有指定的表或视图,则 owner 是可选的。如果没有指定 owner 并且执行大容量复制操作的用户不拥有指定的表或视图,则 Microsoft® SQL Server™ 2000 将返回错误信息并取消大容量复制操作。

table_name

是将数据复制到 SQL Server 时 (in) 的目的表名,以及从 SQL Server 复制数据时 (out) 的源表名。

view_name

是将数据复制到 SQL Server 时 (in) 的目的视图名,以及从 SQL Server 复制数据时 (out) 的源视图名。只有其中所有列都引用同一个表的视图才能用作目的视图。有关将数据复制到视图的限制的更多信息,请参见 INSERT。

Query

是返回一个结果集的 Transact-SQL 查询。如果查询返回多个结果集,例如指定 COMPUTE 子句的 SELECT 语句,只有第一个结果集将复制到数据文件,随后的结果集被忽略。使用双引号引起查询语句,使用单引号引起查询语句中嵌入的任何内容。在从查询中大容量复制数据时,还必须指定 queryout。

in | out | queryout | format

指定大容量复制的方向。in 是从文件复制到数据库表或视图,out 是指从数据库表或视图复制到文件。只有从查询中大容量复制数据时,才必须指定 queryout。根据指定的选项(-n、-c、-w、-6 或 -N)以及表或视图分隔符,format 将创建一个格式文件。如果使用 format,则还必须指定 -f 选项。



说明 Microsoft SQL Server 6.5 中的 bcp 实用工具不支持大容量复制到包含 sql_variant 或 bigint 数据类型的表。


data_file

大容量复制表或视图到磁盘(或者从磁盘复制)时所用数据文件的完整路径。当将数据大容量复制到 SQL Server 时,此数据文件包含将复制到指定表或视图的数据。当从 SQL Server 大容量复制数据时,该数据文件包含从表或视图复制的数据。路径可以有 1 到 255 个字符。

-m max_errors

指定在大容量复制操作取消之前可能产生的错误的最大数目。bcp 无法复制的每一行都将被忽略并计为一个错误。如果没有包括该选项,则默认为 10。

-f format_file

指定格式文件的完整路径,该格式文件包含以前在同一个表或视图上使用 bcp 时的存储响应。当使用由 format 选项所创建的格式文件大容量复制入或复制出数据时,使用此选项。格式文件的创建是可选的。在提示几个格式问题之后,bcp 将提示是否在格式文件中保存回答。默认文件名为 Bcp.fmt。大容量复制数据时,bcp 可引用一个格式文件,因此不必重新交互输入以前的回答。如果未使用此选项,也没有指定 –n、-c、-w、-6 或 -N,则 bcp 将提示输入格式信息。

-e err_file

指定错误文件的完整路径,此错误文件用于存储 bcp 无法从文件传输到数据库的所有行。来自 bcp 的错误信息将发送到用户工作站。如果未使用此选项,则不创建错误文件。