| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1630 人关注过本帖
标题:导入数据库和索引方面的几个问题
只看楼主 加入收藏
玲子
Rank: 1
等 级:新手上路
帖 子:34
专家分:0
注 册:2006-8-24
收藏
 问题点数:0 回复次数:6 
导入数据库和索引方面的几个问题

我的数据库里有一个表,我可以备份和导入表
备份就是把现行的表拷贝一份到一个备份包里,然后如果出了问题,我还可以从备份包里的表代替现行的表
然后问题出现了,总是提示我说“某某表不属于数据库,是不是通过后台连接进入数据库”
我原来是有一个同名的表在使用的啊 ,怎么被覆盖了就不算这个数据库的了
还有,我一个项目要添加另一个项目以前使用过的表,就被提示说这个表不能被添加进本数据库,它属于某某数据库
这个问题怎么解决?
我本来就是在进行实验啊,可能会反复使用这些表
然后被我的vfp操作过的表,都不能再被 ACCESS 操作了,说什么不是期待的类型,这个又怎么解决?
还有我的数据库假如有三个字段,分别是 aaa,bbb,ccc 但是都有重复,不能做主码,但是aaa相同的不多,而且aaa相同的字段,那么ccc都不相同,能不能让几个字段一起做主码,或者索引什么的 ,主要是可以在记录录入的时候,如果记录的aaa和ccc都相同,那么不让录入,有重复,我是在老虎大哥回帖“如何更好的删除重复数据?”代码:
CLOSE ALL
USE 原表
INDEX ON 字段1+字段2+字段3+字段4+字段5+字段6+字段7+字段8 TO TEMP UNIQUE
COPY TO 新表
CLOSE ALL
ERASE TEMP.IDX
USE 新表
BROWSE
中间有 INDEX ON 字段1+字段2+字段3+字段4+字段5+字段6+字段7+字段8 TO TEMP UNIQUE
所以才这么问,我是拿起vfp的书就开始跟着做,这么来学习的,以前学过点SQL ,总的来说还是新手
,共四个问题,可能都比较简单,还请指教,对不起了!

搜索更多相关主题的帖子: 数据库 索引 
2006-09-30 17:08
玲子
Rank: 1
等 级:新手上路
帖 子:34
专家分:0
注 册:2006-8-24
收藏
得分:0 
请逐个回答,谢谢了  

2006-09-30 17:09
啸凡
Rank: 8Rank: 8
等 级:贵宾
威 望:45
帖 子:1356
专家分:885
注 册:2006-2-22
收藏
得分:0 
很欣赏您“拿起vfp的书就开始跟着做,”的勇气,但一些原理、理论还是应该好好看看。比如:数据库表、自由表、没添加到项目中的表等等之间的区别。
第一个问题,数据库表是与数据库建立了一定逻辑联系的,受数据库的管理,直接拷进去的表(尽管与数据库表同名或者是它的复制品)并不能成为数据库表而必须“添加”到数据库中去(您的第二个问题不就是添加吗)。
第二个问题,一个表只能属于一个数据库。如果您需要在不同的数据库中使用这个表,那就拷贝过来后再添加入到另一个数据库中(用编程实现比较方便)。
第三个问题,尽管ACCESS 和VFP都是微软的产品,但它们的文件格式并不相同,实现机制也不一样,目前两种不文件之间还不能像Edit与Word之间那样直接打开对方的文件,但可以通过编程来实现直接转换(那是高手们的本事了),如我一般的菜鸟可以通过第三方软件Excel来实现转换(我们知道ACCESS与Excel是可以直接拷贝粘贴的,而VFP也可以用Copy命令导出到Excel电子表格中)。

两人行已有我师……
2006-09-30 22:22
玲子
Rank: 1
等 级:新手上路
帖 子:34
专家分:0
注 册:2006-8-24
收藏
得分:0 

是啊 这些我也知道点
问题是 怎么解决呢
第一个问题 我导入了一个和原来表相同名称的表,结果不能用,导入就是copy to 嘛
要在这上面做什么修改吗?
第二个问题 怎么能使一个数据库中的表还能被另一个使用? 我在一个数据库中移除了,还是不能在另一个中使用
所以我想知道怎么解决
第三个问题 这样都能想到 啸凡大哥 真的好聪明 利用一个excel中转一下 谢谢


2006-09-30 23:26
wzxc
Rank: 9Rank: 9Rank: 9
来 自:齐鲁大地
等 级:贵宾
威 望:39
帖 子:985
专家分:1296
注 册:2006-4-25
收藏
得分:0 

1、复制任何类型文件。
COPY FILE FileName1 TO FileName2

COPY FILE 创建 FileName1所指定的文件的一个副本。可以使用 COPY FILE 拷贝任何类型的文件。不能复制已打开的文件。必须在原文件名 FileName1 和目标文件名 FileName2 中包含扩展名。

FileName1 和 FileName2 中可以包含如 * 和 ? 的通配符。例如,要创建当点目录下所有扩展名为 .prg 的程序文件的备份,可发出 COPY FILE *.PRG TO *.BAK 命令。

如果使用 COPY FILE 命令建立一个有备注字段、结构索引或二者都有的表的备份,需要同时复制 .fpt 和 .cdx 文件。

不复制索引文件也可以,恢复数据后要重建索引reindex(实践过)


2、remove table 命令
从当前数据库中移除表。

REMOVE TABLE TableName | ? [DELETE] [RECYCLE]
参数
TableName | ?

指定要从当前数据库中移除的表,或显示移除(Remove)对话框,从中选择要移除的当前数据库中的表。
[DELETE]

从数据库中移除表并从磁盘上永久删除。警告:
用 DELETE 关键字删除的表不能恢复。即使 SET SAFETY 命令设置为 ON,Visual FoxPro 也不会确认删除或发出警告。
[RECYCLE]

指定不直接从磁盘上删除表,而是移除到 Windows 回收站中。

3、add table 命令

添加一个自由表到当前数据库中。
ADD TABLE TableName | ? [NAME LongTableName]
参数
TableName

指定要添加到数据库的表的名称。
显示打开对话框,从中可以选择要添加到数据库中的表。
NAME LongTableName

指定表的长名。长名可以包含最多 128 个字符,并且可以用来取代扩展名为 .DBF 的短文件名。
备注
将表添加到数据库中后,可以像其他数据库表一样对该表进行操作。

一旦表被添加到数据库中,就不再是自由表。不过,可以使用 REMOVE TABLE 使数据库中的任何一个表成为自由表。

要添加的表必须具备下列条件:

必须是有效的 .DBF 文件。

除非为表指定一个唯一的长名,否则表不能与打开的数据库中已有的表同名。
不能存在于另外一个数据库中。使用 REMOVE TABLE 可以从另外一个数据库中移去表。要添加表的数据库不能在一个事务处理中被调用。

4、用当前选定表的内容创建一个新文件。
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

指定要复制到新文件的字段。如果省略 FIELDSFieldList,则复制所有字段到文件中。如果要创建的文件不是一张表,即使字段列表中包含备注字段名,也不会复制到新文件中。
FIELDS LIKE Skeleton

指定用 COPY TO 创建的新文件中,只包含原始表中与字段梗概 Skeleton 相匹配的字段。
FIELDS EXCEPT Skeleton

指定用 COPY TO 创建的新文件中,只包含除了与字段梗概 Skeleton 相匹配之外的所有字段。
Scope

指定要复制到文件的记录范围。只有此范围内的记录才被复制。范围子句可以是:ALL, NEXTnRecords, RECORDnRecordNumber, 和 REST。有关范围子句的更多信息,请参见 范围子句。
FOR lExpression1

指定 COPY TO 只复制逻辑条件 lExpression1 值为真 (.T.)的记录到文件中。想有条件的复制记录,应包含 FORlExpression1 子句,以筛选出不想要的记录。
WHILE lExpression2

指定一个条件,仅当逻辑表达式 lExpression2 值为真(.T.)时才复制记录。*译者注:直至遇到第一个为假(.F.)的记录。
[WITH] CDX | [WITH] PRODUCTION

为新表创建一个结构索引文件,新表的结构索引文件与现有表的结构索引文件相同。标识和索引表达式是从原始结构索引文件中复制到新的结构索引文件中的。CDX 和 PRODUCTION 子句的作用相同。可是,除非复制到一张新的 Visual FoxPro 表,否则不应包含 CDX 或 PRODUCTION 。
NOOPTIMIZE

禁止对 COPY TO 使用 Rushmore 查询优化。更多的信息,请参见 SET OPTIMIZE 和 使用 Rushmore 查询优化数据访问速度。
TYPE

如果要创建的文件不是一张 Visual FoxPro 表,则指定文件类型。尽管必须指定一个文件类型,但可以不包含 TYPE 关键字。
要明确数据库、数据库表和自由表之间的关系以及相互转换的命令。


认真看书学习,弄通Fox主义。
2006-10-03 20:19
Tiger5392
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:88
帖 子:2775
专家分:2237
注 册:2006-5-17
收藏
得分:0 
关闭所有数据库、表,使用COPY FILE命令一个一个地复制。

感言:学以致用。 博客:http://www./blog/user14/65009/index.shtml email:Tiger5392@
2006-10-05 12:06
fown
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:58
帖 子:1229
专家分:171
注 册:2005-5-26
收藏
得分:0 
最好用命令建立索引,可能大家习惯用设计器了吧,我不会用设计器,还是用代码习惯一点,随时随地,随心所欲的建立,尤其是在GRID表头排序的时候,效果更明显一些,

有人说VFP不行了,我想说,你连VFP十分之一的功能都不会用,你怎么知道VFP不行?本人拒绝回答学生的问题我回答问题一般情况下只提供思路不提供代码,请理解
2006-10-06 14:45
快速回复:导入数据库和索引方面的几个问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016534 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved