APPEND 命令有多种使用方式,从最简单的交互式添加到程序化的批量添加,下面我将为你一一介绍。

基本语法和核心功能
APPEND 命令的核心功能是在当前打开的表的末尾添加一条或多条新的空记录。
基本语法:
APPEND [BLANK]
常用语法详解
1 APPEND (交互式添加新记录)
不带任何参数的 APPEND 会打开一个浏览窗口,让你直接输入新记录的数据。
操作步骤:

-
打开表: 你必须使用
USE命令打开一个表。USE my_customer.dbf
-
执行 APPEND: 输入
APPEND命令。APPEND
-
输入数据: 系统会打开一个类似于电子表格的窗口,所有字段名显示为列标题,下面是一行空行等待你输入,你可以像在 Excel 中一样,逐字段输入数据。
-
保存记录:
(图片来源网络,侵删)- 输入完一条记录后,按
Ctrl + W保存并退出编辑窗口。 - 或者直接点击窗口的关闭按钮(X)。
- 如果想放弃当前正在编辑的记录,可以按
Esc键或Ctrl + Q。
- 输入完一条记录后,按
特点:
- 直观: 适合手动、少量地添加数据。
- 交互性强: 可以立即看到输入效果,方便修改。
- 不适合自动化: 在程序中执行此命令会暂停程序,等待用户手动输入,效率低下。
2 APPEND BLANK (添加一条空记录)
APPEND BLANK 是 APPEND 最常用的变体,它不打开任何窗口,直接在表的末尾添加一条所有字段都为空(或默认值)的记录。
使用场景:
当你需要在程序中先创建一条空记录,然后再用程序代码(如 REPLACE 命令)为它的字段赋值时,这个命令非常有用。
示例:
USE products.dbf
* 添加一条空记录
APPEND BLANK
* 现在用 REPLACE 命令为这条新记录填充数据
REPLACE product_id WITH "P1001", ;
product_name WITH "Super Widget", ;
price WITH 99.99, ;
in_stock WITH 100
* 检查结果
BROWSE
特点:
- 高效: 不需要用户交互,适合在程序中批量创建记录。
- 非阻塞: 程序会立即执行下一条命令,不会暂停。
- 灵活性高: 可以结合
REPLACE、SCATTER、GATHER等命令实现复杂的数据录入逻辑。
3 APPEND FROM (从其他文件批量追加记录)
这是 APPEND 功能最强大的地方,允许你从另一个文件(如文本文件、Excel 文件、另一个 FoxPro 表等)中读取数据,并追加到当前打开的表中。
基本语法:
APPEND FROM FileName [FIELDS FieldList] [FOR lExpression] [TYPE SDF | DELIMITED [WITH Delimiter]]
参数详解:
FileName: 要读取的数据源文件名,如果是文本文件,通常需要包含扩展名(如.txt,.csv)。FIELDS FieldList: 指定只将源文件中的数据追加到当前表的指定字段中,字段名之间用逗号分隔。FOR lExpression: 添加一个条件,只有满足条件的记录才会被追加。TYPE: 指定源文件的格式,这是最关键的参数。
TYPE 参数的常见值:
-
SDF(Space-Delimited Format - 空格定界格式)- 文件是文本文件,每行一条记录,字段之间用空格分隔,没有分隔符和定界符。
- 字段的顺序和宽度必须与目标表的结构完全匹配。
- 示例文件内容 (
data.txt):1001 张三 30 北京 1002 李四 25 上海 1003 王五 28 广州
-
DELIMITED(逗号定界格式 / CSV)- 这是最常用的格式,与 Excel 的 CSV 文件兼容。
- 文件是文本文件,每行一条记录,字段之间用逗号分隔。
- 字符型字段用双引号 括起来。
- 示例文件内容 (
data.csv):"1001","张三",30,"北京" "1002","李四",25,"上海" "1003","王五",28,"广州" WITH Delimiter: 如果你的分隔符不是逗号,可以用这个选项指定。WITH ";"表示用分号分隔。
APPEND FROM 示例:
假设我们有一个 employees.dbf 表,结构为 emp_id(C), name(C), age(N), city(C)。
从 CSV 文件追加
USE employees.dbf * 从 data.csv 文件中追加所有记录 APPEND FROM data.csv TYPE DELIMITED * 只追加 age 大于 28 的记录 APPEND FROM data.csv TYPE DELIMITED FOR age > 28 * 只追加 name 和 city 字段 APPEND FROM data.csv FIELDS name, city TYPE DELIMITED
从另一个 FoxPro 表追加
* 假设有两个表: current_employees.dbf 和 new_hires.dbf * new_hires.dbf 的结构与 current_employees.dbf 兼容 USE current_employees.dbf APPEND FROM new_hires.dbf
注意事项和最佳实践
- 结构匹配: 使用
APPEND FROM时,源文件的字段数量、数据类型和顺序必须与目标表的结构匹配,如果不匹配,可能会导致数据错位或追加失败。 - 打开表:
APPEND系列命令只对当前使用USE命令打开的表有效。 - 记录指针:
APPEND命令执行后,记录指针会指向新添加的第一条记录。 - 索引: 如果表有主索引或候选索引,追加新记录时必须确保关键字段(如
emp_id)的值是唯一的,否则会出错。 - 数据清理: 从文本文件导入前,最好用文本编辑器检查一下文件,确保没有多余的空格、引号或格式错误。
- 大文件处理: 对于非常大的文本文件,可以考虑使用低级文件操作函数(如
FOPEN(),FGETS())来逐行读取和处理,这样可以更好地控制内存和错误处理。
| 命令 | 功能 | 适用场景 |
|---|---|---|
APPEND |
打开浏览窗口,交互式添加新记录 | 手动、少量数据录入,数据检查 |
APPEND BLANK |
在表末尾添加一条空记录 | 程序化批量创建记录,后续用 REPLACE 等赋值 |
APPEND FROM |
从外部文件(文本、CSV、表)批量追加记录 | 数据迁移、数据导入、自动化数据处理 |
掌握 APPEND 及其变体是进行 FoxPro 数据管理和程序开发的基础。APPEND BLANK 和 APPEND FROM 尤其是在编写应用程序时使用频率极高。
