copy to 命令
示例 请参阅
用当前选定表的内容创建新文件。
语法
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 | CVS | | 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 FieldLsit,则将所有字段复制到新文件。若要创建的文件不是表,则即使备注字段名包含在字段列表中,也不把备注字段复制到新文件。
FIELDS LIKE Skeleton
指定与所给字段梗概相匹配的原始表中的字段。使用 COPY TO 创建的新文件中包含 Skeleton。
FIELDS EXCEPT Skeleton
指定在 COPY TO 创建的新文件中包含除了与字段梗概 Skeleton 匹配的所有字段。
字段梗概 Skeleton 支持通配符。例如,要想在新文件中包含以字母A 和 P 开头的所有字段,可以使用下列代码:
COPY TO mytable FIELDS LIKE A*,P*
LIKE 子句可以和 EXCEPT 子句组合使用:
COPY TO mytable FIELDS LIKE A*,P* EXCEPT PARTNO*
Scope
指定要复制到新文件的记录范围。只有在范围内的记录才被复制。Scope 子句为:ALL、NEXT nRecord、RECORD nRecordNumber 和 REST。有关信息,请参阅帮助中的 Scope 子句。
FOR lExpression1
指定只复制逻辑条件 lExpression1 为“真”(.T.) 的记录到文件中。包含 FORlExpression1 可按条件复制记录,筛选出不想要的记录。
若 lExpression1 是可优化表达式,则 Rushmore 优化有 FOR lExpression1 子句的 copy to 命令。为获得最佳效果,可在 FOR lExpression1 子句中使用可优化表达式。
有关优化表达式的内容,请参阅稍后部分的 SET OPTIMIZE 命令和《Microsoft Visual FoxPro 6.0 中文版程序员指南》第十五章“优化应用程序”的“掌握 Rushmore 技术”。
WHILE lExpression2
指定一个条件,只有当逻辑表达式 lExpression2 为“真”(.T.) 时才复制记录。
[WITH] CDX | [WITH] PRODUCTION
创建一个与已有表的结构索引文件相同的新表结构索引文件。原始结构索引文件的标识和索引表达式被复制到新结构索引文件。CDX 等同于 PRODUCTION子句。
若不是复制到 Visual FoxPro 新表,则不要包含 CDX 或 PRODUCTION。
NOOPTIMIZE
使 COPY TO 的 Rushmore 优化无效。
有关详细内容,请参阅稍后部分的SET OPTIMIZE命令。
TYPE
若要创建的文件不是 Visual FoxPro 表,则指定该文件类型。指定文件类型时不必包含 TYPE 关键字。
FOXPLUS
Visual FoxPro 备注文件与 FoxBASE+ 备注文件有不同的结构。若 VisualFoxPro 源表包含备注字段,则包含 FOXPLUS 子句可创建一个能在FoxBASE+ 中使用的表。Visual FoxPro 备注字段不能包含二进制数据,因为FoxBASE+ 不支持备注字段中出现二进制数据。
FOX2X
创建能在 FoxPro for Windows、FoxPro for Macintosh 和 FoxPro for MS-DOS 的早期版本(2.0,2.5 和 2.6 版)中打开的新表。
对于数值型、浮点型、整型、双精度型和货币型字段,源表中的 null 值被转换为新表中的 0。对于其他字段类型,源表中的 null 值被转换为新表中的空值 (blank value)。有关空值 (blank value) 的详细内容,请参阅 ISBLANK( )。
下表列出了当包含 FOX2X 参数时,被转换为新表中不同字段类型的 Visual FoxPro 字段类型。
Visual FoxPro 字段类型 FoxPro 2.x 字段类型
货币型 浮点型
日期时间型 日期型
双精度型 浮点型
整型 数值型
DIF
创建一个 VisiCalc .DIF (数据交换格式)文件。Visual FoxPro 表的字段变为矢量(列),记录变为元组(行)。若在 FileName 中不包含扩展名,则指定新文件的扩展名为 .DIF。
MOD
创建 Microsoft Multiplan 4.01 版文件。若不包含扩展名,则指定新的Microsoft Multiplan 文件的扩展名为 .MOD。
SDF
创建 SDF(系统数据格式)文件。SDF 文件是 ASCII 文本文件,其中记录都有固定长度,并以回车和换行符结尾。字段不分隔。若不包含扩展名,则指定SDF 文件的扩展名为 .TXT。注意,当使用 copy to 命令创建 SDF 文件时,会忽略 SET CENTURY 的设置。
SYLK
创建 SYLK (符号连接)交换文件。SYLK 文件用于 Microsoft Multiplan。每个当前选定表中的字段变为电子表格中的一列,每个记录变为一行。SYLK 文件没有扩展名。
WK1
创建 Lotus 1-2-3 2.x 版的电子表格文件。每个当前选定表中的字段变为电子表格中的一列,每条记录变为一行。新建电子表格的文件扩展名指定为 .WK1。
WKS
创建 Lotus 1-2-3 1a 版的电子表格文件。当前选定表中的每个字段变为电子表格中的一列,每条记录变为一行。新建电子表格的文件扩展名指定为 .WKS。创建 Lotus Symphony 1.1 或 1.2 版的电子表格文件。当前选定表中的每个字段变为电子表格中的一列,每条记录变为一行。新建电子表格的文件扩展名指定为 .WR1。
WR1
创建 Lotus Symphony 1.1 或 1.2 版的电子表格文件。当前选定表中的每个字段变为电子表格中的一列,每条记录变为一行。新建电子表格的文件扩展名指定为 .WR1。
WRK
创建 Lotus Symphony 1.0 版的电子表格文件。当前选定表中的每个字段变为电子表格中的一列,每条记录变为一行。新建电子表格的文件扩展名指定为 .WRK。
XLS
创建 Microsoft Excel 2.0 版的电子表格文件。当前选定表中的每个字段变为电子表格中的一列,每条记录变为一行。若不包含文件扩展名,则新建电子表格的文件扩展名指定为 .XLS。
XL5
创建 Microsoft Excel 5.0 版的电子表格文件。当前选定表中的每个字段变为电子表格中的一列,每条记录变为一行。若不包含文件扩展名,则新建电子表格的扩展名指定为 .XLS。
DELIMITED
创建分隔文件。分隔文件是 ASCII 文本文件,其中每条记录以一个回车和换行符结尾。默认的字段分隔符是逗号。因为字符型数据可能包含逗号,所以另外用双引号分隔字符型字段。
除非另外指定,否则所有新建 DELIMITED 文件的扩展名都指定为 .TXT。
DELIMITED WITH Delimiter
创建用字符代替引号分隔字符型字段的分隔文件。分隔字符型字段的字符用 Delimiter 指定。
DELIMITED WITH BLANK
创建用空格代替逗号分隔字符型字段的分隔文件。
DELIMITED WITH TAB
创建用制表符代替逗号分隔字符型字段的分隔文件。
DELIMITED WITH CHARACTER Delimiter
创建的文本文件中,各个字段由指定的 Delimite 分隔。若指定 Delimite 为分号,注意分号应用引号括起来,因为分号在 Visual Foxpro 中有特殊的意义:同一命令被分写在不同行中时,用分号作为行的结束。Delimite 还可以是BLANK 或 TAB。
注意 WITH Delimiter 可与 WITH CHARACTER Delimiter 配合使用。比如,在下面的例子中,创建了一个文本文件,其中各个字段由分号 ; 分隔,字符字段用下划线 _ 标识:
COPY TO mytxt.txt DELIMITED WITH _ WITH CHARACTER ';'
AS nCodePage
指定 COPY TO 创建的表或文件的代码页。Visual FoxPro 复制当前选定表的内容,并且在复制数据的同时,自动将数据转换到为新表或文件指定的代码页。如可能,Visual FoxPro 用指定的代码页标记新建的表或文件。
若为 nCodePage 指定了不被支持的值,Visual FoxPro 产生一条错误信息。可使用 GETCP( ) 显示“代码页”对话框,并允许为 Visual FoxPro 创建的表或文件指定代码页。
若省略 AS nCodePage,则将新建的表或文件转换到 Visual FoxPro 当前代码页。
若 nCodePage 是 0,则不发生代码页转换,并且不用代码页标记新建的表或文件。
说明
若已设置了索引排序方式,则按主索引顺序复制记录。