| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 247 人关注过本帖
标题:把vfp数据表导入到mysql数据库
只看楼主 加入收藏
sam_jiang
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:14
帖 子:790
专家分:1170
注 册:2021-10-13
结帖率:96.72%
收藏
 问题点数:0 回复次数:6 
把vfp数据表导入到mysql数据库
    之前论坛里有人问如何将vfp数据库升迁至mysql数据库,前一段时间闲着没事,就去翻看了一下资料,写了这个这个程序。早就想发布在论坛里,只可惜这个论坛已经半死不活,经常上不了线,没办法,就试着在微信公众号里发布,正好自己也有了解微信公众号的打算,以后自己再写个类控制自己的微信公众号,感兴趣的朋友可以关注我的公众号,互相交流。

    废话不说,奉上代码吧~

程序代码:
*********************mysqlgen.prg***********************

PARAMETERS calias
IF PARAMETERS()=0
    calias=GETFILE([dbf])
    IF !EMPTY(calias)
        cmd=[use ]+[']+calias+[']
        &cmd
    ELSE
        RETURN .f.
    ENDIF
ENDIF
IF  JUSTFNAME(calias)!=ALIAS()
    cmd=[USE ]+[']+calias +['] +[ IN 0]
    &cmd
    SELECT &calias
ENDIF
COPY STRUCTURE EXTENDED TO dbfstruct
fname=ALIAS()
********************确定包含索引的field名******************
*************以确定是否有PRIMARY KEY | UNIQUE *************
ncount=TAGCOUNT()
cunique=[]
DO CASE 
    CASE ncount=1
        cprimarykey=KEY(CDX(1),1)
    CASE ncount>1
        cprimarykey=KEY(CDX(1),1)
        FOR i =2 TO ncount
            cnuique=cunique+[ ]+KEY(CDX(1),i)
        ENDFOR
    OTHERWISE 
        cprimarykey=[]
ENDCASE
USE IN SELECT(0) &&可以关闭calias了
USE dbfstruct
*!*BROWSE 
csql=[create TABLE ] +fname+CHR(13)
n=RECCOUNT()
DIMENSION field_definition[n]
STORE [] TO field_definition
csql=csql+CHR(9)+[(]
FOR i=1 TO n 
    GOTO i
    DO CASE &&确定type定义脚本
        CASE field_type=[I] && 整数
            ctype=[INT ]
        CASE field_type=[N] AND field_dec=0 && 整数
            ctype=[INT]+[(]+transf(field_len)+[) ]
        CASE field_type=[N] AND field_dec>0 && 小数
            ctype=[DECIMAL(]+transf(field_len)+[,]+;
                  TRANSFORM(field_dec)+[) ]
        CASE field_type=[B] &&双精度
            ctype=DOUBLE(]+transf(field_len)+;
                  [,]+TRANSFORM(field_dec)+[) ]
        CASE field_type=[F] &&浮点型
            ctype=[FLOAT(]+transf(field_len)+;
                  [,]+TRANSFORM(field_dec)+[) ]
        CASE field_type=[C] &&定长字符
            ctype=[CHAR(]+transf(field_len)+[) ]
        CASE INLIST(field_type,[V],[M]) &&变长字符串
            ctype=[VARCHAR(1024)]
        CASE INLIST(field_type,[Q],[G],[W]) &&二进制变长大字符串
            ctype=[MEDIUMBLOB ]
        CASE field_type=[D] &&日期
            ctype=[DATE ]
        CASE field_type=[T] &&日期时间
            ctype=[DATETIME ]
        CASE field_type=[Y] &&货币型
            ctype=[DECIMAL(8,4) ]
        CASE field_type=[L] &&逻辑型
            ctype=[BOOL ]
    ENDCASE 
    DO CASE &&确定索引脚本
        CASE !EMPTY(cprimarykey) AND ;
              ALLTRIM(UPPER(field_name))=UPPER(cprimarykey)
            cindexscript=[PRIMARY KEY ]
        CASE !EMPTY(cunique) AND;
              (ALLTRIM(UPPER(field_name)) $ UPPER(cunique))
            cindexscript=[INDEX INDEX_]+ALLTRIM(FIELD_NAME)+[ ]
        OTHERWISE
            cindexscript=[]
    ENDCASE
***********这里放入每个field的定义*************
    *!*create_difinition[1]=
    *!*create_difinition[2]=
    *!*...
    *!*create_difinition[n]=
    field_definition[i]=allt(field_name)+[ ]+ctype+;
               [ ]+iif(field_null=.t.,[NULL ],[NOT NULL ]);
               +iif(field_step>0,[AUTOINC NEXTVALUE ];
               +transf(field_next)+[ STEP ]+;
               transf(field_step),[])+iif(empty(field_defa),[],;
               [DEFAULT ]+ICASE(ALLTRIM(FIELD_DEFA)=[.T.],;
               [TRUE],ALLTRIM(FIELD_DEFA)=[.F.],[FALSE],;
               allt(field_defa)))+[ ]+cindexscript+;
               IIF(i=n,[)],[,]+CHR(13)+CHR(9))
    csql=csql+field_definition[i]
***********************************************
ENDFOR
*!* 方便查看生成的sql脚本,完成后注释掉这两句就可以了
STRTOFILE(csql,"csql.txt") 
MODIFY FILE csql.txt
*!* *****************************


文章连接:https://mp.weixin.
搜索更多相关主题的帖子: AND vfp 数据库 CASE KEY 
2024-09-10 17:40
wengjl
Rank: 14Rank: 14Rank: 14Rank: 14
等 级:贵宾
威 望:109
帖 子:2215
专家分:3882
注 册:2007-4-27
收藏
得分:0 

只求每天有一丁点儿的进步就可以了
2024-10-25 13:18
schtg
Rank: 12Rank: 12Rank: 12
来 自:Usa
等 级:贵宾
威 望:67
帖 子:1744
专家分:3333
注 册:2012-2-29
收藏
得分:0 
谢谢分享!
2024-10-26 06:03
easyppt
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:1
帖 子:306
专家分:708
注 册:2021-11-24
收藏
得分:0 
谢谢分享!
2024-10-26 08:25
tsg2005
Rank: 1
等 级:新手上路
帖 子:8
专家分:9
注 册:2012-3-24
收藏
得分:0 
好东西需要先收藏一下。
2024-10-26 08:41
camsion
Rank: 2
等 级:论坛游民
帖 子:18
专家分:15
注 册:2006-12-7
收藏
得分:0 
好东西需要先收藏一下。
2024-10-28 11:58
ykxby001
Rank: 2
等 级:论坛游民
帖 子:39
专家分:57
注 册:2023-7-6
收藏
得分:0 
2024-10-28 16:31
快速回复:把vfp数据表导入到mysql数据库
数据加载中...
 
   



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

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