麒麟v10 上部署 TiDB v5.1.2 生产环境优化实践
1289
2023-04-18
Access转成SQL数据库的方法
首先,我说的是在ACCESS2000,SQL2000之间转换,其他的我也还没有尝试过,希望大家多多试验,肯定是有办法的。
转换的方法
1、打开“控制面板”下“管理工具”中的“数据库源”。
2、按”添加“添加一个新的数据源,在选择栏里选“Driver do microsoft Access (*.mdb)”,完成后将出现一个框,在“数据库源”里面输入你想写的名称,我取名叫“ABC”,说明不需要填,接着,按下面的选择,寻找你的数据库地址和选中(注意,请先备份自己的ACCESS数据库),然后确定。数据源在这里建好了,剩下转换了。
3、打开SQL2000企业管理器,进入数据库,新建一个空的数据库“ABC”。
4、选择新建立的数据库,按鼠标右键,选择“所有任务”下“导入数据”,按“下一步”继续。
5、在数据库源下拉但中选择”Driver do microsoft Access(*.mdb)“,在”用户/系统DSN“中,选种你刚才添加的”ABC“,按 ”下一步“。
6、“目的”不需要修改,选择服务器(一般下为自己的本机local,也可以选择服务器地址或者局域网地址,确定你的权限是否可以操作,),使用WINDOWS 身份验证指用自己的系统管理员身份操作,使用SQL身份操作验证可以用于网站的操作,推荐用后者。
7、选上使用SQL身份操作验证后,填写你的用户名和密码,我自己选择的是系统默认号码sa,****,数据库选择刚新建的ABC,按下一步。
8、这一步的两个单项选择,从数据源复制表和视图与用一条查询指令指定要传输的数据,选择前者,按下一步继续。
9、这里将出现你自己ACCESS数据库的表,按全选后,下一步。
10、DTS导入/导出向导,看立即运行被选中按下一步。
11、按完成继续。
12、这个步骤你将看到你的数据被导入SQL2000里面,当出现已经成功把XXX个表导入到数据库的字样,而且所有的表前面都有绿色的勾,就表示成功导入所有数据,如果中途出现问题或者表前面有红色的叉的话,说明该表没有成功导入,这时就要回去查看自己的操作是否正确了。
最近又在升级一个程序,使其支持多数据库。 原来的程序数据库为***,所以使用*** 的“导入和导出数据”功能将一个 *** 数据库转换成了Access数据库,但其中发现了一些问题,但也找到了解决方案,一并记录于此:
1、转换程序会将***的视图转换成表,而不是Access的查询; 2、在为字段设置默认值为空字符的时候,***用”,而Access用”"; 3、Access中没有GetDate()函数,应该使用Now()函数代替; 4、Access没有***用来获取客户端机器名的host_name()函数; 5、Access中没有Case When Then语句,但可以用IIF()函数模拟实现功能; 6、发现:Access使用的是Visual Basic的语言结构和函数; 7、转换程序会正确转换***字段的 IS NULL 属性; 8、Access也支持多字段的索引,只是设置方法有点特别(参见帮助); 9、***中bit型的1、0值,在Access中为True和False; 10、在Access中使用多个LEFT JOIN这样的语句时,必须用括号做相关的界定; 11、Access的SQL没有注释语句,***的/**/无法通用; 12、一条Insert语句在Access查询中正常运行,但在程序中出现“Insert Into 语句的语法错误”,后来发现原来是语句中的一个列名是Access的关键字(用[]界定可解决问题),但奇怪的是将该语句放置到Access的查询中执行却不会出错。
需要对转换后的Access数据库进行以下项目的检查,以确保与***一致:
1、主键。转换后的Access数据库都没有主键,需自己设置; 2、自增字段。转换程序会将***的自增字段转换为数字型,需手动修改为Access的“自动编号”类型; 3、默认值。转换程序不会转换***中设置的默认值,需手动设置; 4、bigint型字段。转换程序会将***的bigint转换为小数,须手动调整为Access的整型或长整型; 5、索引。转换程序不会转换索引,需手动在Access中建立索引。
在Delphi下,想让程序同时支持Access及***,需注意以下方面:
1、在Access中使用 SELECT * FROM Books WHERE RegDate = ‘2007-5-1′ 是会出现“标准表达式中数据类型不匹配”这样的错误的(RegDate是日期型),必须使用SELECT * FROM Books WHERE RegDate = #2007-5-1# 或 SELECT * FROM Books WHERE RegDate = CDate('2007-5-1′); 但在Access中,Insert、delete和update中使用单引号界定日期却是可以正常执行的。 2、尽量不要使用***的bigint类型,尤其该字段是自增的情况下; 3、Access的varchar(文本)型最大只有255,所以如果一个文本型字段大于255时,最好定义成备注型(Access中)或text型(***中); 4、在Access中一般会出现如下错误:不正常地定义参数对象。提供了不一致或不完整的信息。将相应Query的ParamCheck设为False即可; 5、Access中的逻辑值在库中为-1和0,而***中为1和0,所以写BoolField = 1这样的语句有兼容性问题,应该改为BoolField <> 0; 6、在Access中有主键的Query才可更新,而***无此要求。
以上就是Access和SQL数据库相互转换的方法及注意事项。
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。