Note | 该命令在头文件中定义,将由 X# 预处理器预处理为函数调用。如果禁用标准头文件 (-nostddefs),该命令将不可用。如果告诉编译器使用不同的标准头文件(-stddef ),则此命令也可能不可用。 |
用途
将记录导出到新的数据库或文本文件。
语法
COPY TO <xcTargetFile> [FIELDS <idFieldList>] [<Scope>]
[WHILE <lCondition>] [FOR <lCondition>]
[SDF] | [DELIMITED [WITH BLANK | <xcDelimiter>]] |
[VIA <cDriver>] [INHERIT FROM <acRDDs>]
参数
TO <xcTargetFile> | 目标文件的名称,包括可选的驱动器、目录和扩展名。 有关文件搜索和创建规则,请参阅 SetDefault() 和 SetPath()。 数据库文件的默认扩展名由 RDD 决定。 文本文件的默认扩展名是 .TXT。 |
| 如果 <xcTargetFile> 不存在,将创建该文件。 如果存在,该命令将尝试以独占模式打开文件,如果成功,文件将被覆盖,不会发出警告或出错。 如果由于其他进程正在使用该文件等原因而拒绝访问,NetErr() 将被设置为 TRUE。 |
FIELDS <idFieldList> | 要从 <xcSourceFile> 追加的字段列表。 默认为所有字段。 |
| 只有两个文件中名称和类型相同的字段才会被附加。 如果相同名称的字段在数据类型上不匹配,则会出现运行时错误。 |
<Scope> | 当前数据库文件中要处理的部分。 默认为所有可见记录。范围可以是以下一个或多个子句:
[NEXT <NEXT>] 可选择指定从源文件第一条记录开始处理的记录数。这将从源文件的第一条记录开始。
[RECORD <rec>] 可选的记录 ID 如果指定,处理将从源文件中的该数据记录开始。
[<rest:REST>] 选项 REST 可指定是否从当前记录到最后一条记录按顺序搜索。如果指定了条件,则选项 ALL 为默认值。
[ALL] 选项 ALL 指定导入源文件中的所有记录。这是默认设置。 |
WHILE <lCondition> | 范围内每条可见记录都必须满足的条件,从当前记录开始。 一旦 while 条件失败,进程就会终止。 如果没有指定 <Scope>,while 条件会将默认范围改为文件中的其他可见记录。 |
FOR <lCondition> | 处理范围内每条可见记录必须满足的条件。 如果某条记录不符合指定条件,则会被忽略,并处理下一条可见记录。 如果没有指定 <Scope> 或 WHILE 子句,则 for 条件会将默认范围改为所有可见记录。 |
SDF | 系统数据格式文件,格式规格如下表所示。 记录和字段为固定长度。
|
DELIMITED [WITH <xcDelimiter>] |
| 字符字段用双引号(默认分隔符)或指定的 <xcDelimiter> 括起来的文本文件。 字段和记录的长度可变,格式规范如下表所示: |
Character 字段 | Delimited, 尾部空白被截断 |
| 文本文件,其中字段之间用一个空格隔开,字符字段不括入分隔符。 格式规范如下表所示: |
Character 字段 | Not Delimited, 尾部空白截断 |
| 警告 如果在 COPY TO 命令行中指定了 DELIMITED WITH 子句,它必须是最后指定的子句。 |
VIA <cDriver> | 为工作区提供服务的 RDD 名称。 如果未指定,则使用 RDDSetDefault() 确定的默认 RDD。 |
| 包含 RDD 名称的一维数组,主 RDD 从这些 RDD 继承特殊功能。 这样,您就可以在不同的工作区和不同的数据库驱动程序中使用具有特殊功能(如加密或解密)的 RDD。 这些 RDD 将覆盖主 RDD(使用 VIA 子句指定)的特殊功能。 如果多个 RDD(使用 INHERIT FROM 子句指定)实现了相同的功能,则与列表中最后一个 RDD 相关的功能优先。 |
备注
已删除记录: 如果 SetDeleted() 为 FALSE,源文件中已删除的记录将被复制到 <xcTargetFile> 中,并保留其已删除状态。
可见性 但是,如果 SetDeleted() 设置为 "true",删除的记录将不可见,因此不会被处理。 同样,过滤记录(使用 DbSetFilter() 或条件控制命令)也不会被处理。
示例
本例演示了复制到另一个数据库文件:
USE sales NEW
COPY TO temp
本例演示了 SDF 文件的布局,该文件有四个字段,每种数据类型一个字段:
USE testdata NEW
COPY NEXT 1 TO temp SDF
TYPE temp.txt
// Result: Character 12.0019890801T
下一个示例演示了 DELIMITED 文件的布局:
COPY NEXT 1 TO temp DELIMITED
TYPE temp.txt
// Result: "Character",12.00,19890801,T
最后,本例演示了使用不同分隔符的 DELIMITED 文件的布局:
COPY NEXT 1 TO temp DELIMITED WITH '
TYPE temp.txt
// Result: 'Character',12.00,19890801,T
程序集
XSharp.RT.DLL
参见
APPEND FROM, COPY FILE, COPY STRUCTURE, DbCopy(), DbCopyDelim(), DbCopySDF(), RDDSetDefault(), SetDefault(), SetPath(), SetDeleted()