??? ?p??p???? (?? ??) ??p??????? ?????? ?? .DBF ????? ? .ISM/.ISD ????? (?? DBASE-???? ? MySQL-????).
???????? ? MySQL ?????? (??? ?? ??????) ??????? ?? ??p????p??,
p????? ?? ????? ??p????p? DBASE ???????. ????? ???????????? ???? ??????
??? INT, SMALLINT, CHAR ? ?.?., ?? ?????? ?? VARCHAR.
???p???? MySQL. ???? ???? ?p??????? ? UNIX'e ????p???? ?p??? ? ??????
(??? ??? ???????? ???????? ???-??? ?? .h) ???????? ??p????p? ? ???? ?p??p????,
????????p???? ? ?????????.
P.S. ???????? ? ???????? ?????????. ???? DBF ????? ?? 30-50 ???????????? ?? 3-5 ??????.
P.S.S. ??. ??? ?? http://www.mysql.ru/download/dbf2mysql.zip>
?????? ?????? ?????? ????????????? DBF -> TXT. ??? ????? ?????????? ????? ????????.
- 1. ????????? ?????? DFB ? ????????? ???? ??? ????? (?????????, ?? ?????? ???)
- 2. ???????? ????????? ????????? ?? PHP. ? PHP ???? ??? ??????????? ???????. ????? ????????? ?? 2 ?? 10 ?????.
- 3. ??????????????? ???????? DBF2TXT. ???? ?? ?????? ?????? (ASM, Pascal, C, Perl...). ????? ????? ?? 20 ??? ???: http://ya.ru/yandsearch?text=dbf2txt&rpt=rad>
??????????, ???? ?????????:
*/
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
#include <fcntl.h>
#include <io.h>
int main(void)
{
int f,g;
long i,len,end,buf,nbuf,nnbuf,j,filelen,cols;
char b[22222], // ????p ? 22??. ????? ????????? ?? 60??, ??, ????????,
// ?p??p???? ?? ????????p?????. BUF*NBUF ?????? ???? ??????
// p????p? ????? ????p?!
*lllen,
/********** ??? - ??p????p? - ????? - ??p??????p????? ************************/
f1[] ="D:\1\base\backup\glossary.dbf", // dbf .DBF
f2[] ="C:\mysql\data\dima\glossary.isd", // sql .ISD (??????)
f2ism[]="C:\mysql\data\dima\glossary.ism"; // sql .ISM (???????? ???????)
buf=20; // ????????(????) ? ??p??? ??????? (.dbf & .ism)
nbuf=500; // ?????? ?? .DBF ??p?? ?? p?? (????p)
// ??? ??????, ??? ????p?? p???????
len=493429L; // ??p?? ? ???? ?????? .dbf, ????? ?????? ?? Dos Navigator'a
// ??? ??????? ?????? dbf-?????? (???p???p, dbu.exe)
cols=2; // ????? ??????? ? .dbf
// ? ??????????? ?? ???? ??????????? ????????, ??. 76 ??p???
/*****************************************************************************/
if (buf*nbuf>22222) {
printf("????????? ????? 'nbuf' ???, ????? nbuf*buf ???? ?????? 22222");
return 1;
}
system("cls"); // ???? ??p?? ?????????
system("echo ??????..."); // ? ???????? ??? ????? - ?p??p???? ?? ??????.
// ? ???? ???? ????? ??? ????? ??????? ????p?
// b[?] (~64Kb), ???????????? ? Borland C++ 3.1
strcpy(b,"echo .>"); //
strcat(b,f2); //
system(b); // ???????? .ISD
if ((f = _open(f1, O_RDONLY)) == -1) // ???p??? DBF
{
perror("Error1:");
return 1;
}
if ((g = _open(f2, O_WRONLY)) == -1) // ???p??? ISD
{
perror("Error2:");
return 1;
}
// ??????????? ????????, ?????? ?????? ? .dbf ?????
_read(f,b,0x20 + 1 + 0x20 * cols);
nnbuf=nbuf*buf;
end=(len-(len%nbuf))/nbuf;
filelen=len*buf;
printf("end=%li, len%%nnbuf=%linlen-(len%%nbuf)=%lin",end,(len%nnbuf),len-(len%nnbuf));
// ??p???????? ???????? ??????. ?? ????? ?p???? BUF*NBUF.
for (i=0; i<end; i++) {
_read(f,b,nnbuf);
for (j=0; j<nnbuf; j+=buf) b[j]=0xFE;
_write(g,b,nnbuf);
}
// ??p???????? ??????????? ????? ??????. ??? ????? p????
// <p????p_?????> ????? <BUF*NBUF>
i=_read(f,b,nnbuf);
i=i-i%buf;
for (j=0; j<i; j+=buf) b[j]=0xFE;
_write(g,b,i);
// ??? ?????? - ?????? ??p????????
printf(">end=%i, len%%nbuf=%lin",i,(len%nbuf));
_close(f);
_close(g);
////////////////////////////////////////////////////////////
// ? ????? MySQL ???? .ism ?p???? ????????? ?????...
if ((f = _open(f2ism, O_RDWR)) == -1)
{
perror("Error3:");
return 1;
}
_read(f,b,16);
_write(f,&len,4); // ???-?? ?????
_read(f,b,12);
_write(f,&filelen,4); // ????? ????? .isd
_write(f,&len,4); // ???-?? ?????
_read(f,b,8);
_write(f,&len,4); // ???-?? ?????
_close(f);
}