将表文件复制成其它类型的文件

lnzxp 2004-09-27 08:30:13
将表文件复制为文本文件是不是应该用copy to <新文件名> sdf ,可是我用copy to <新文件名>.txt这个命令也没提示我出错,而且还可以用use <新文件名>.txt(打开表得命令)打开,用type打开文本文件的命令却看不到内容,请那位高手帮我解释以下!
...全文
147 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
lnzxp 2004-09-27
  • 打赏
  • 举报
回复
谢谢,知道了!
十豆三 2004-09-27
  • 打赏
  • 举报
回复
copy to sp1.txt sdf
&&是真正转换成文本,要显示内容,用:
type sp1.txt

copy to sp1.txt
&&没有真正转换成文本,只是扩展名变了,结构还是表结构,所以可以打开并显示内容
use sq1.txt
list &&显示内容
lnzxp 2004-09-27
  • 打赏
  • 举报
回复
use sp
copy to sp1.txt
use sp1.txt
list
这个命令是对的嘛?
那生成的sp1.txt他是什么类型的文件呀,文本还是表?
如果正确那复制文本文件有两种方法嘛(copy to sp1 sdf和copy to sp1.txt)嘛,他们有什么区别嘛?
xclzteb 2004-09-27
  • 打赏
  • 举报
回复
楼上说得对。
十豆三 2004-09-27
  • 打赏
  • 举报
回复
你的情况应该是这样:
use 表
copy to 文本
use 文本
type 文本 &&这句应改为:list
十豆三 2004-09-27
  • 打赏
  • 举报
回复
用当前选定表的内容创建新文件。

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 FieldLsit,则将所有字段复制到新文件。若要创建的文件不是表,则即使备注字段名包含在字段列表中,也不把备注字段复制到新文件。
FIELDS LIKE Skeleton
指定与所给字段梗概相匹配的原始表中的字段。使用 COPY TO 创建的新文件中包含 Skeleton。
FIELDS EXCEPT Skeleton
指定在 COPY TO 创建的新文件中包含除了与字段梗概 Skeleton 匹配的所有字段。
Scope
指定要复制到新文件的记录范围。只有在范围内的记录才被复制。Scope 子句为:ALL、NEXT nRecord、RECORD nRecordNumber 和 REST。有关信息,请参阅帮助中的 scope(作用域)子句。
FOR lExpression1
指定只复制逻辑条件 lExpression1 为“真”(.T.) 的记录到文件中。包含 FORlExpression1 可按条件复制记录,筛选出不想要的记录。
WHILE lExpression2
指定一个条件,只有当逻辑表达式 lExpression2 为“真”(.T.) 时才复制记录。
[WITH] CDX | [WITH] PRODUCTION
创建创建一个与已有表的结构索引文件相同的新表结构索引文件。原始结构索引文件的标识和索引表达式被复制到新结构索引文件。CDX 等同于 PRODUCTION子句。若不是复制到 Visual FoxPro 新表,则不要包含 CDX 或 PRODUCTION。
NOOPTIMIZE
使 COPY TO 的 Rushmore 优化无效。有关详细内容,请参阅SET OPTIMIZE 和 用 Rushmore 查询优化数据访问速度。
TYPE
若要创建的文件不是 Visual FoxPro 表,则指定该文件类型。指定文件类型时不必包含 TYPE 关键字。
FOXPLUS
Visual FoxPro 备注文件与 FoxBASE+ 备注文件有不同的结构。若 Visual 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 字段类型 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 的设置。
如果 SDF 文件包含日期数据, 它应该是 YYYYMMDD 格式以允许有效地恢复到 Visual FoxPro 表中。

如果日期信息是不明确的格式, 你应该在执行 COPY TO 前确保日期是 YYYYMMDD 格式。

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。
CSV
创建一个逗号分隔的文件。CSV 文件在文件中的第一行是字段名, 并且字段值字段在文件中是以逗号分隔。
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 用指定的代码页标记新建的表或文件。
若省略 AS nCodePage,则将新建的表或文件转换到 Visual FoxPro 当前代码页。

备注
字段梗概 Skeleton 支持通配符。例如, 要复制所有以字母 A 和 P 打头的字段到新文件中, 用以下命令:

COPY TO myfields LIKE A*,P*
LIKE 子句可以和 EXCEPT 子句组合使用:

COPY TO myfields LIKE A*,P* EXCEPT PARTNO*
若 lExpression1 是可优化表达式,则 Rushmore 优化有 FOR lExpression1 子句的 copy to 命令。为获得最佳效果,可在 FOR lExpression1 子句中使用可优化表达式。有关优化表达式的内容,请参阅 SET OPTIMIZE 和 用 Rushmore 查询优化数据访问速度。

若已设置了索引排序方式,则按主索引顺序复制记录。

若为 nCodePage 指定了不被支持的值,Visual FoxPro 产生一条错误信息。可使用 GETCP( ) 显示“代码页”对话框,并允许为 Visual FoxPro 创建的表或文件指定代码页。

COPY TO 命令除以下情况下保持 autoincrementing 设置:

COPY TO...FIELDS 中的字段列表未包含使用 autoincrementing 的字段。
在 COPY TO 命令中使用了 TYPE 子句, 忽略该子句中指定的 type。
目标表的 autoincrementing 开始于源表的 NextValue 值。例如, 假定源表中的 NextValue 值是 1000 Step 值是 1。目标表中的第一行的 NextValue 值为 1001, 第二行的值为 1002, 以此类推。

示例
在下面的示例中,打开 customer 表并且复制三个连续的记录到名为 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
十豆三 2004-09-27
  • 打赏
  • 举报
回复
将表复制成文本文件:
use 表
copy to 文本.txt TYPE DELIMITED

2,722

社区成员

发帖
与我相关
我的任务
社区描述
VFP,是Microsoft公司推出的数据库开发软件,用它来开发数据库,既简单又方便。
社区管理员
  • VFP社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧