用当前选定表的内容创建一个新文件。
COPY TO FileName [DATABASE DatabaseName [NAME LongTableName]]
[FIELDS FieldList | FIELDS LIKE Skeleton | FIELDS EXCEPT Skeleton]
[Scope] [FOR lExpression1] [WHILE lExpression2]
[ [WITH] CDX ] | [ [WITH] PRODUCTION ] [NOOPTIMIZE]
[ [TYPE] [ FOXPLUS | FOX2X | DIF | MOD | SDF | SYLK | WK1 | WKS | WR1
| WRK | CSV | XLS | XL5 | DELIMITED [ WITH Delimiter | WITH BLANK
| WITH TAB | WITH CHARACTER Delimiter ] ] ] [AS nCodePage]
参数
FileName
指定要创建的新文件名。如果不包含文件扩展名,COPY TO 用指定的文件类型确定默认扩展名。如果没有指定文件类型,COPY TO 将创建一张新的 Visual FoxPro 表,并以默认的.dbf扩展名确定表文件名。
DATABASE DatabaseName
指定新表要添加到的数据库。
NAME LongTableName
为新表指定一个长名。长名可包含最多 128 个字符,并用以在数据库中代替短文件名。
FIELDS FieldList
指定要复制到新文件的字段。如果省略 FIELDS FieldList,则复制所有字段到文件中。如果要创建的文件不是一张表,即使字段列表中包含备注字段名,也不会复制到新文件中。
FIELDS LIKE Skeleton
指定用 COPY TO 创建的新文件中,只包含原始表中与字段梗概 Skeleton 相匹配的字段。
FIELDS EXCEPT Skeleton
指定用 COPY TO 创建的新文件中,只包含除了与字段梗概 Skeleton 相匹配之外的所有字段。
Scope
指定要复制到文件的记录范围。只有此范围内的记录才被复制。Scope 子句可以是:ALL, NEXT nRecords, RECORD nRecordNumber, 和 REST。有关Scope 子句的更多信息,请参见 Scope 子句。
FOR lExpression1
指定 COPY TO 只复制逻辑条件 lExpression1 值为真 (.T.)的记录到文件中。想有条件的复制记录,应包含 FOR lExpression1 子句,以筛选出不想要的记录。
WHILE lExpression2
指定一个条件,仅当逻辑表达式 lExpression2 值为真(.T.)时才复制记录。*译者注:直至遇到第一个为假(.F.)的记录。
[WITH] CDX | [WITH] PRODUCTION
为新表创建一个结构索引文件,新表的结构索引文件与现有表的结构索引文件相同。标识和索引表达式是从原始结构索引文件中复制到新的结构索引文件中的。CDX 和 PRODUCTION 子句的作用相同。可是,除非复制到一张新的 Visual FoxPro 表,否则不应包含 CDX 或 PRODUCTION 。
NOOPTIMIZE
禁止对 COPY TO 使用 Rushmore 查询优化。更多的信息,请参见 SET OPTIMIZE 和 使用 Rushmore 查询优化来加速数据访问。
TYPE
如果要创建的文件不是一张 Visual FoxPro 表,则指定文件类型。尽管必须指定一个文件类型,但可以不包含 TYPE 关键字。
FOXPLUS
Visual FoxPro 备注文件与 Microsoft FoxBASE+ 备注文件的结构不同。如果原 Visual FoxPro 表包含备注字段,若包含 FOXPLUS 子句,则创建一张可以用于 FoxBASE+ 中的表。Visual FoxPro 备注字段中不能包含二进制数据,因为 FoxBASE+ 的备注字段不支持二进制数据。
FOX2X
创建一张可以在 FoxPro 早期版本(2.0, 2.5, 及 2.6 版本)中打开的新表。源表中的数值型(Numeric), 浮点型(Float), 整型(Integer), 双精度型(Double), 和货币型字段中如果为 null 值,则在新表中以 0 替代。对于其它字段类型,源表中的 null 值在新表中被替换为空值(blank)。有关空值的更多信息,请参见ISBLANK( )。下表列出了当包含 FOX2X 参数时,被转换为新表字段类型与 Visual FoxPro 的字段类型间不同的替换关系。 Visual FoxPro 字段类型 FoxPro 2.x 字段类型
大二进制对象(Blob) *NEW
备注型
货币型
浮点型
日期时间型
日期型
双精度型
浮点型
整型
数值型
可变长二进制型(Varbinary) *NEW
备注型
可变长字符型(Varchar) *NEW
备注型
DIF
创建一个 VisiCalcR .dif (数据交换格式 Data Interchange Format) 文件。 Visual FoxPro 表中的字段变为向量(列) ,记录变为元组(行)。如果 FileName 中没有包含扩展名,新文件将被指定为 .dif 扩展名。
MOD
创建一个 Microsoft MultiplanR 4.01 版本的文件。如果没有包含扩展名,新的 Microsoft Multiplan 文件将被指定为 .mod 扩展名。
SDF
创建一个 SDF (系统数据格式 System Data Format)文件。SDF 文件是一个 ASCII 文本文件,其中的记录为固定长度并以回车和换行符结尾。字段不分隔。如果没有包含扩展名,SDF 文件名将被指定为 .txt 扩展名。当使用 COPY TO 创建 SDF 文件时,忽略 SET CENTURY 的设置。如果 SDF 文件中包含日期数据,日期数据应为 YYYYMMDD 格式,以便有效的恢复到 Visual FoxPro 表中。如果日期信息以不明确的格式存储,在执行 COPY TO 之前,应该确保其格式为 YYYYMMDD 。
SYLK
创建一个 SYLK (符号连接 Symbolic Link) 交换文件。SYLK 文件用于 Microsoft MultiPlan。当前选定表的每个字段变为电子表格中的列,每条记录变为行。SYLK 文件名没有扩展名部分。
WK1
创建一个 LotusR 1-2-3R 2.x 版本的电子表格文件。当前选定表的每个字段变为电子表格中的一列,每条记录变为一行。新的电子表格文件扩展名为 .wk1 。
WKS
创建一个 Lotus 1-2-3 1a 版本的电子表格文件。当前选定表的每个字段变为电子表格中的一列,每条记录变为一行。新的电子表格的文件扩展名为 .wks 。
WR1
创建一个 Lotus SymphonyR 1.1 或 1.2 版本的电子表格文件。当前选定表中的每个字段变为电子表格中的一列,每条记录变为一行。新的电子表格的文件扩展名为 .wr1 。
WRK
创建一个 Lotus Symphony 1.0 版本的电子表格文件。当前选定表中的每个字段变为电子表格中的一列,每条记录变为一行。新的电子表格的文件扩展名为 .wr1 。
CSV
创建一个逗号分隔的文件。CSV 文件的第一行是字段名,且文件其它部分使用逗号分隔字段值。
XLS
创建一个 Microsoft Excel 2.0 版本的工作表文件。当前选定表中的每个字段变为电子表格的一列,每条记录变为一行。如果没有包含文件扩展名,新工作表以 .xls 为扩展名。 注意:*NEW
尽管可以输出最多 65,535 行,但其中有一行保留给字段标题。Excel 8.0 (Excel 97)之前的版本只能显示前 16,384 行,并且不能导入超过 32,767 行的文件。
XL5
创建一个 Microsoft Excel 5.0 版本的工作表文件。当前选定表中的每个字段变为电子表格中的一列,每条记录变为一行。如果没有包含文件扩展名,新工作表以 .xls 为扩展名。 注意:*NEW
尽管可以输出最多 65,535 行,但其中有一行保留给字段标题。Excel 8.0 (Excel 97)之前的版本只能显示前 16,384 行,并且不能导入超过 32,767 行的文件。
DELIMITED
创建一个分隔文件。分隔文件是一个 ASCII 文本文件,其中每条记录以回车和换行符结尾。默认以逗号分隔字段。因为字符型数据可以包含逗号,字符型字段应加上双引号定界。除非另外指定,否则新创建的 DELIMITED 文件以 .txt 为扩展名。
DELIMITED WITH Delimiter
创建一个用除了引号以外的其它字符作为字符型字段定界符的分隔文件。分隔字符型字段的字符用 Delimiter 指定。
DELIMITED WITH BLANK
创建一个用空格代替逗号分隔字段的分隔文件。
DELIMITED WITH TAB
创建一个用制表符代替逗号分隔字段的分隔文件。
DELIMITED WITH CHARACTER Delimiter
创建一个所有字段用指定的 Delimiter 字符分隔的分隔文件。如果 Delimiter 是一个分号(;),因为其在 Visual FoxPro 中表示命令行的继续,所以应使用引号括上。也可以为 Delimiter 指定 BLANK 和 TAB 关键字。WITH Delimiter 子句和 WITH CHARACTER 子句可以结合使用。例如,下面命令创建一个用下划线作为字符型字段定界符、每个字段间用分号分隔的文本文件: 复制代码
COPY TO mytxt.txt DELIMITED WITH _ WITH CHARACTER ';'
AS nCodePage
指定 COPY TO 创建的表或文件的代码页。Visual FoxPro 复制当前选定表的内容,并在复制数据的同时,为新表或文件自动转换到指定的代码页。如果可能,Visual FoxPro 用指定的代码页标记新建表或文件。如果省略 AS nCodePage,新建表或文件将被修改为当前 Visual FoxPro 代码页。
说明
字段梗概 Skeleton 支持通配符。例如,复制指定所有以字母 A 和 P 开头的的字段到新文件中,使用:
复制代码
COPY TO mytable FIELDS LIKE A*,P*
LIKE 子句可以与 EXCEPT 子句结合使用:
复制代码
COPY TO mytable FIELDS LIKE A*,P* EXCEPT PARTNO*
如果 lExpression1 是一个可优化表达式,Rushmore 查询优化将优化有 FOR lExpression1 子句的 COPY TO 命令。为了获得最佳性能,应该在 FOR lExpression1 中使用可优化表达式。有关 Rushmore 优化表达式的更多信息,请参见SET OPTIMIZE 和 使用 Rushmore 查询优化来加速数据访问。
如果设置了索引排序,将按主索引的顺序复制。
如果在 nCodePage 中指定了一个不支持的值,Visual FoxPro 将产生一条错误信息。可以在 nCodePage 中使用 GETCP( ) 函数,从而显示代码页(Code Page)对话框,并允许指定一个由 Visual FoxPro 创建的表或文件的代码页。
除了以下条件之外,COPY TO 命令保持自动增量设置:
COPY TO...FIELDS 指定的字段列表中没有包含使用自动增量的字段。
COPY TO 命令中使用 TYPE 子句,无论该子句指定了什么类型。
目标表自动增量开始于源表的 NextValue。例如,假设源表中的 NextValue 为 1000,步长为 1。目标表的自动增量字段第一行值为 1001;第二行值为 1002,以此类推。
在使用 COPY TO 命令时应该知道,SET VARCHARMAPPING 命 令 将对由 SET FIELDS 命令 设定的字段(可变长 度的字符表达式)产生影响。*NEW
示例
在下面的示例中,先打开 Customer 表,然后复制 3 条记录到新的 DELIMITED 数据文件 Temp.txt 中。
复制代码
CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'Data\testdata')
USE Customer
&& 打开 Customer 表.
COPY NEXT 3 TO Temp TYPE DELIMITED
WAIT WINDOW '这是分隔的文本文件' NOWAIT
MODIFY FILE Temp.txt
DELETE FILE Temp.txt
请参阅
其他资源
APPEND FROM 命令
COPY FILE 命令
GETCP( ) 函数
EXPORT 命令
IMPORT 命令
RENAME TABLE 命令
命令
语言参考
发送有关本主题的建议给微软。© Microsoft 公司版权所有。
本主题中文翻译:王振鹏 RichardWZP MSN:CHENCHEN8203@