C O P Y T O 命 令
用当前选定表的内容创建新文件
语 法
COPY TO FileName
[DATABASE DatabaseName [NAME LongTableNam e]] [FIELDS FieldList
| FIELDS LIKE Skeleton
| FIELDS EXCEPT Skeleton ]
[ Scope ] [FOR lExpression1 ] [ W H ILE lExpression2 ] [[ W ITH] CDX] | [[WITH] PRODUCTION] [NOOPTIMIZE]
[[TYPE] [FOXPLUS | FOX2X | DIF | MOD
| SDF | SYLK | W K1 | WKS | WR1 | W R K | CVS | | XLS | XL5
| DELIMITED [WITH Delimiter | W ITH BLANK | WITH TAB
| W ITH CHARACTER Delimite r]]] [AS nCodePage ]
参 数 描 述
FileName
指 定 COPY TO 要 创 建 的 新 文 件 名 若 文 件 名 中 不 包 含 扩 展 名 则 指 定 扩 展 名为 文 件 类 型 的 默 认 扩 展 名 若 不 指 定 文 件 类 型 则 COPY TO 创 建 一 个 新 的
V isual FoxPro 表 并 且 用 默 认 扩 展 名 .DBF 指 定 表 文 件 名
DATABASE DatabaseName
指 定 要 添 加 新 表 的 数 据 库
N A M E 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 Clauses FOR lExpression1
指 定 只 复 制 逻 辑 条 件 lExpression1 为 真 (.T.) 的 记 录 到 文 件 中 包 含 FOR
lExpression1 可 按 条 件 复 制 记 录 筛 选 出 不 想 要 的 记 录
若 lExpression1 是 可 优 化 表 达 式 则 Rushmore 优 化 有 FOR lExpression1 子 句的 COPY TO 命 令 为 获 得 最 佳 效 果 可 在 FOR lExpression1 子 句 中 使 用 可 优化 表 达 式
有 关 优 化 表 达 式 的 内 容 请 参 阅 稍 后 部 分 的 SET OPTIMIZE 命 令 和
M icrosoft Visual FoxPro 6.0 中 文 版 程 序 员 指 南 第 十 五 章 优 化 应 用 程 序的 掌 握 Rushmore 技 术
W H ILE lExpression2
指 定 一 个 条 件 只 有 当 逻 辑 表 达 式 lExpression2 为 真 (.T.) 时 才 复 制 记 录
[ W ITH] CDX | [WITH] PRODUCTION
创建一个与已有表的结构索引文件相同的新表结构索引文件 原始结构索引文件的标识和索引表达式被复制到新结构索引文件 CDX 等 同 于 PRODUCTION
子 句
若 不 是 复 制 到 V isual FoxPro 新 表 则 不 要 包 含 C D X 或 PRODUCTION NOOPTIMIZE
使 COPY TO 的 Rushmore 优 化 无 效
有 关 详 细 内 容 请 参 阅 稍 后 部 分 的 SET OPTIMIZE 命 令
TYPE
若 要 创 建 的 文 件 不 是 Visual FoxPro 表 则 指 定 该 文 件 类 型 指 定 文 件 类 型 时不 必 包 含 TYPE 关 键 字
FOXPLUS
V isual FoxPro 备 注 文 件 与 FoxBASE+ 备 注 文 件 有 不 同 的 结 构 若 V isual FoxPro 源 表 包 含 备 注 字 段 则 包 含 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 2.x 字 段 类 型
货币型 浮点型
日期时间型 日期型
双精度型 浮点型
整型 数值型
DIF
创 建 一 个 V isiCalc .DIF 数 据 交 换 格 式 文 件 Visual FoxPro 表 的 字 段 变 为矢 量 列 记 录 变 为 元 组 行 若 在 FileName 中 不 包 含 扩 展 名 则 指 定新 文 件 的 扩 展 名 为 .DIF
创 建 M icrosoft Multiplan 4.01 版 文 件 若 不 包 含 扩 展 名 则 指 定 新 的
M icrosoft Multiplan 文 件 的 扩 展 名 为 .M O D
创 建 SDF 系 统 数 据 格 式 文 件 SDF 文 件 是 ASCII 文 本 文 件 其 中 记 录 都有 固 定 长 度 并 以 回 车 和 换 行 符 结 尾 字 段 不 分 隔 若 不 包 含 扩 展 名 则 指 定SDF 文 件 的 扩 展 名 为 .TXT 注 意 当 使 用 COPY TO 命 令 创 建 SDF 文 件 时会 忽 略 SET CENTURY 的 设 置
创 建 SYLK 符 号 连 接 交 换 文 件 SYLK 文 件 用 于 M icrosoft Multiplan 每个 当 前 选 定 表 中 的 字 段 变 为 电 子 表 格 中 的 一 列 每 个 记 录 变 为 一 行 SYLK 文件 没 有 扩 展 名
创 建 Lotus 1-2-3 2.x 版 的 电 子 表 格 文 件 每 个 当 前 选 定 表 中 的 字 段 变 为 电 子 表格 中 的 一 列 每 条 记 录 变 为 一 行 新 建 电 子 表 格 的 文 件 扩 展 名 指 定 为 . W K 1
W K S
创 建 Lotus 1-2-3 1a 版 的 电 子 表 格 文 件 当 前 选 定 表 中 的 每 个 字 段 变 为 电 子 表
格 中 的 一 列 每 条 记 录 变 为 一 行 新 建 电 子 表 格 的 文 件 扩 展 名 指 定 为 . W K S 创 建 Lotus Symphony 1.1 或 1.2 版 的 电 子 表 格 文 件 当 前 选 定 表 中 的 每 个 字 段变 为 电 子 表 格 中 的 一 列 每 条 记 录 变 为 一 行 新 建 电 子 表 格 的 文 件 扩 展 名 指 定为 . W R 1
W R K
创 建 Lotus Symphony 1.0 版 的 电 子 表 格 文 件 当 前 选 定 表 中 的 每 个 字 段 变 为电 子 表 格 中 的 一 列 每 条 记 录 变 为 一 行 新 建 电 子 表 格 的 文 件 扩 展 名 指 定 为 . W R K
CVS
创 建 一 个 用 逗 号 分 隔 各 值 的 文 件 一 个 CSV 文 件 的 第 一 行 是 字 段 名 文 件 中余 下 的 字 段 值 用 逗 号 分 隔
创 建 M icrosoft Excel 2.0 版 的 电 子 表 格 文 件 当 前 选 定 表 中 的 每 个 字 段 变 为 电子 表 格 中 的 一 列 每 条 记 录 变 为 一 行 若 不 包 含 文 件 扩 展 名 则 新 建 电 子 表 格的 文 件 扩 展 名 指 定 为 .XLS
XL5
创 建 M icrosoft Excel 5.0 版 的 电 子 表 格 文 件 当 前 选 定 表 中 的 每 个 字 段 变 为 电子 表 格 中 的 一 列 每 条 记 录 变 为 一 行 若 不 包 含 文 件 扩 展 名 则 新 建 电 子 表 格的 扩 展 名 指 定 为 .XLS
创建分隔文件 分隔文件是 ASCII 文本文件 其中每条记录以一个回车和换行符结尾 默认的字段分隔符是逗号 因为字符型数据可能包含逗号 所以另外用双引号标识字符型字段
除 非 另 外 指 定 否 则 所 有 新 建 DELIMITED 文 件 的 扩 展 名 都 指 定 为 .TXT
DELIMITED WITH Delimiter
用 字 符 而 不 是 等 号 分 隔 文 件 中 的 字 符 型 字 段 用 字 符 Delimiter 代 替 引 号 标 识字 符 型 字 段
DELIMITED WITH BLANK
用 空 格 代 替 逗 号 分 隔 文 件 中 的 各 个 字 段
DELIMITED WITH TAB
用 制 表 符 代 替 逗 号 分 隔 文 件 中 的 各 个 字 段
DELIMITED WITH CHARACTER Delimiter
创 建 的 文 本 文 件 中 各 个 字 段 由 指 定 的 Delimite 分 隔 若 指 定 Delimite 为 分号 注 意 分 号 应 用 引 号 括 起 来 因 为 分 号 在 V isual Foxpro 中 有 特 殊 的 意 义 同 一 命 令 被 分 写 在 不 同 行 中 时 用 分 号 作 为 行 的 结 束 Delimite 还 可 以 是BLANK 或 TAB
注 意 W ITH Delimiter 可 与 W ITH 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 则不发生代码页转换 并且不用代码页标记新建的表或文件
说 明
若已设置了索引排序方式 则按主索引顺序复制记录
示 例
在下面的示例中 打开 Customer 表并且复制三个连续的记录到名为 TEMP.TXT 的新建分隔格式的数据文件中
CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'Data\testdata') USE customer && 打开 Customer 表
COPY NEXT 3 TO temp TYPE DELIMITED
WAIT WINDOW 'This is the delimited text file' NOWAIT MODIFY FILE temp.txt
DELETE FILE temp.txt
请 参 阅
APPEND FROM , COPY FILE , GETCP , EXPORT , IMPOR T , R E N A M E TABLE