khorsandreza
شنبه 12 مرداد 1392, 09:44 صبح
در روش قدیمی به این شیوه عمل می کردم
Function CreateSqlSt:String;
Begin
Pstr := 'INSERT INTO MyTB(CESR,SERL,CSAB,FNAM,LNAM,PNAM,MNAM,SHNS,MTAV, DTAV,VAZE,VAZG,VAZM,MAZH,JENS,TABE,';
Pstr := Pstr+'KARF,DARJ,TAHM,MTAH,DRJM,DRJH,ARSM,ARSH,ZNEG ,ZNEK,HOGS,HSAZ,SMOS,SMAN,CMAS,ZMAS,TAHO,OLAD,OLCH ,VALD,';
Pstr := Pstr+'TKFL,CDSH,ZMAZ,JAYG,OZV,DOZV,DHAD,DIJD,DBAZ, DVAZ,DFOT,DEAD,DTAG,ENDR,ENMO,ENOM,ENMA,ENKH,DRM1, DRM2,';
Pstr := Pstr+'DRM3,HMEH,CODM,FLAG,HFLG,CODV,CODK,EMAS,CODR ,OZVK,OZVM,SAZM,HEDE,HZKF,ELAT,SAKH,CDRM,BIMV,HEKM ,TAFK,';
Pstr := Pstr+'SMOD,SJEB,STAD,SASH,SAZD,SSRB,SBSJ,SDLT,SNOD ,SFAR,SZEN,SENT,SBKR,SMBH,NIRO,TAR,OS_CODE,';
Pstr := Pstr+'VAZEYAT,YEGM,MHLP,CKAN,DBAZ1,DTAV1,DOZV1,CHK ,PK_ID) Values(';
PStr := PStr+'"'+ADO_IN300CESR.AsString +'",';
PStr := PStr+'"00",';
PStr := PStr+'"'+ADO_IN300CSAB.AsString +'",';
PStr := PStr+'"'+GetreplChar(ADO_IN300FNAM.AsString) +'",';
PStr := PStr+'"'+GetreplChar(ADO_IN300LNAM.AsString) +'",';
PStr := PStr+'"'+Copy(ADO_IN300PNAM.AsString,1,10) +'",';
PStr := PStr+'"'+ADO_IN300MNAM.AsString +'",';
PStr := PStr+'"'+ADO_IN300SHNS.AsString +'",';
PStr := PStr+'"'+ADO_IN300MTAV.AsString +'",';
PStr := PStr+'"'+ADO_IN300DTAV.AsString +'",';
PStr := PStr+'"'+ADO_IN300VAZE.AsString +'",';
PStr := PStr+'"'+ADO_IN300VAZG.AsString +'",';
PStr := PStr+'"'+ADO_IN300VAZM.AsString +'",';
PStr := PStr+'"'+ADO_IN300MAZH.AsString +'",';
PStr := PStr+'"'+ADO_IN300JENS.AsString +'",';
PStr := PStr+'"'+ADO_IN300TABE.AsString +'",';
PStr := PStr+'"'+ADO_IN300KARF.AsString +'",';
PStr := PStr+'"'+ADO_IN300DARJ.AsString +'",';
PStr := PStr+'"'+ADO_IN300TAHM.AsString +'",';
PStr := PStr+'"'+ADO_IN300MTAH.AsString +'",';
PStr := PStr+'"'+ADO_IN300DRJM.AsString +'",';
PStr := PStr+'"'+ADO_IN300DRJH.AsString +'",';
PStr := PStr+'"'+ADO_IN300ARSM.AsString +'",';
PStr := PStr+'"'+ADO_IN300ARSH.AsString +'",';
PStr := PStr+'"'+ADO_IN300ZNEG.AsString +'",';
PStr := PStr+'"'+ADO_IN300ZNEK.AsString +'",';
PStr := PStr+ ADO_IN300HOGS.AsString +' ,';
PStr := PStr+'"'+ADO_IN300HSAZ.AsString +'",';
PStr := PStr+'"'+ADO_IN300SMOS.AsString +'",';
PStr := PStr+'"'+ADO_IN300SMAN.AsString +'",';
PStr := PStr+'"'+ADO_IN300CMAS.AsString +'",';
PStr := PStr+'"'+ADO_IN300ZMAS.AsString +'",';
PStr := PStr+'"'+ADO_IN300TAHO.AsString +'",';
PStr := PStr+'"'+ADO_IN300OLAD.AsString +'",';
PStr := PStr+'"'+ADO_IN300OLCH.AsString +'",';
PStr := PStr+'"'+ADO_IN300VALD.AsString +'",';
PStr := PStr+'"'+ADO_IN300TKFL.AsString +'",';
PStr := PStr+'"'+ADO_IN300CDSH.AsString +'",';
PStr := PStr+'"'+ADO_IN300ZMAZ.AsString +'",';
PStr := PStr+'"'+ADO_IN300JAYG.AsString +'",';
PStr := PStr+'"'+ADO_IN300OZV .AsString +'",';
PStr := PStr+'"'+ADO_IN300DOZV.AsString +'",';
PStr := PStr+'"'+ADO_IN300DHAD.AsString +'",';
PStr := PStr+'"'+ADO_IN300DIJD.AsString +'",';
PStr := PStr+'"'+ADO_IN300DBAZ.AsString +'",';
PStr := PStr+'"'+ADO_IN300DVAZ.AsString +'",';
PStr := PStr+'"'+ADO_IN300DFOT.AsString +'",';
PStr := PStr+'"'+ADO_IN300DEAD.AsString +'",';
PStr := PStr+'"'+ADO_IN300DTAG.AsString +'",';
PStr := PStr+'"'+ADO_IN300ENDR.AsString +'",';
PStr := PStr+'"'+ADO_IN300ENMO.AsString +'",';
PStr := PStr+'"'+ADO_IN300ENOM.AsString +'",';
PStr := PStr+'"'+ADO_IN300ENMA.AsString +'",';
PStr := PStr+'"'+ADO_IN300ENKH.AsString +'",';
PStr := PStr+'"'+ADO_IN300DRM1.AsString +'",';
PStr := PStr+'"'+ADO_IN300DRM2.AsString +'",';
PStr := PStr+'"'+ADO_IN300DRM3.AsString +'",';
PStr := PStr+'"'+ADO_IN300HMEH.AsString +'",';
PStr := PStr+'"'+ADO_IN300CODM.AsString +'",';
PStr := PStr+'"'+ADO_IN300FLAG.AsString +'",';
PStr := PStr+'"'+ADO_IN300HFLG.AsString +'",';
PStr := PStr+'"'+ADO_IN300CODV.AsString +'",';
PStr := PStr+'"'+ADO_IN300CODK.AsString +'",';
PStr := PStr+'"'+ADO_IN300EMAS.AsString +'",';
PStr := PStr+'"'+ADO_IN300CODR.AsString +'",';
PStr := PStr+'"'+ADO_IN300OZVK.AsString +'",';
PStr := PStr+'"'+ADO_IN300OZVM.AsString +'",';
PStr := PStr+'"'+ADO_IN300SAZM.AsString +'",';
PStr := PStr+'"'+ADO_IN300HEDE.AsString +'",';
PStr := PStr+'"'+ADO_IN300HZKF.AsString +'",';
PStr := PStr+'"'+ADO_IN300ELAT.AsString +'",';
PStr := PStr+'"'+ADO_IN300SAKH.AsString +'",';
PStr := PStr+'"'+ADO_IN300CDRM.AsString +'",';
PStr := PStr+'"'+ADO_IN300BIMV.AsString +'",';
PStr := PStr+'"'+ADO_IN300HEKM.AsString +'",';
PStr := PStr+'"'+ADO_IN300TAFK.AsString +'",';
PStr := PStr+'"'+ADO_IN300SMOD.AsString +'",';
PStr := PStr+'"'+ADO_IN300SJEB.AsString +'",';
PStr := PStr+'"'+ADO_IN300STAD.AsString +'",';
PStr := PStr+'"'+ADO_IN300SASH.AsString +'",';
PStr := PStr+'"'+ADO_IN300SAZD.AsString +'",';
PStr := PStr+'"'+ADO_IN300SSRB.AsString +'",';
PStr := PStr+'"'+ADO_IN300SBSJ.AsString +'",';
PStr := PStr+'"'+ADO_IN300SDLT.AsString +'",';
PStr := PStr+'"'+ADO_IN300SNOD.AsString +'",';
PStr := PStr+'"'+ADO_IN300SFAR.AsString +'",';
PStr := PStr+'"'+ADO_IN300SZEN.AsString +'",';
PStr := PStr+'"'+ADO_IN300SENT.AsString +'",';
PStr := PStr+'"'+ADO_IN300SBKR.AsString +'",';
PStr := PStr+'"'+ADO_IN300SMBH.AsString +'",';
PStr := PStr+'"'+ADO_IN300NIRO.AsString +'",';
PStr := PStr+'"'+ADO_IN300TAR.AsString +'",';
PStr := PStr+'"'+Copy(ADO_IN300CSAB.AsString,1,2)+'00' +'",';
PStr := PStr+'"'+ADO_IN300VAZE.AsString+ADO_IN300VAZG.AsString+AD O_IN300VAZM.AsString +'",';
PStr := PStr+'"'+Copy(ADO_IN300YEGM.AsString,1,21) +'",';
PStr := PStr+'"'+Copy(ADO_IN300MHLP.AsString,1,11) +'",';
PStr := PStr+'"'+ADO_IN300CKAN.AsString +'",';
PStr := PStr+'"'+Copy(ADO_IN300DBAZ.AsString,1,4) +'",';
PStr := PStr+'"'+Copy(ADO_IN300DTAV.AsString,1,4) +'",';
PStr := PStr+'"'+Copy(ADO_IN300DOZV.AsString,1,4) +'",1,';
Result := PStr;
End;
ولی حالا با SP انجام می دم من چون اطلاعات را از طریق فایل اکسس دریافت می کنم و مجبورم رکورد برکورد به پایگاه داده اضافه بکنم
INSERT INTO MyTB(CESR,SERL,CSAB,FNAM,LNAM,PNAM,MNAM,SHNS,MTAV, DTAV,VAZE,VAZG,VAZM,MAZH,JENS,TABE,
KARF,DARJ,TAHM,MTAH,DRJM,DRJH,ARSM,ARSH,ZNEG,ZNEK, HOGS,HSAZ,SMOS,SMAN,CMAS,ZMAS,TAHO,OLAD,OLCH,VALD,
TKFL,CDSH,ZMAZ,JAYG,OZV,DOZV,DHAD,DIJD,DBAZ,DVAZ,D FOT,DEAD,DTAG,ENDR,ENMO,ENOM,ENMA,ENKH,DRM1,DRM2,
DRM3,HMEH,CODM,FLAG,HFLG,CODV,CODK,EMAS,CODR,OZVK, OZVM,SAZM,HEDE,HZKF,ELAT,SAKH,CDRM,BIMV,HEKM,TAFK,
SMOD,SJEB,STAD,SASH,SAZD,SSRB,SBSJ,SDLT,SNOD,SFAR, SZEN,SENT,SBKR,SMBH,NIRO,TAR,OS_CODE,
VAZEYAT,MHLP,PARD,NSBT,NSBG,NSBM,YEGM,CKAN,DBAZ1,D TAV1,DOZV1,PK_ID)
VALUES(:CESR,'00',:CSAB,:FNAM,:LNAM,:PNAM,:MNAM,:S HNS,:MTAV,:DTAV,:VAZE,:VAZG,:VAZM,
:MAZH,:JENS,:TABE,:KARF,:DARJ,:TAHM,:MTAH,:DRJM,:D RJH,:ARSM,:ARSH,:ZNEG,:ZNEK,
Cast(:HOGS as Double precision),:HSAZ,:SMOS,:SMAN,:CMAS,:ZMAS,:TAHO,:OL AD,:OLCH,:VALD,:TKFL,:CDSH,:ZMAZ,
:JAYG,:OZV,:DOZV,:DHAD,:DIJD,:DBAZ,:DVAZ,:DFOT,:DE AD,:DTAG,:ENDR,:ENMO,:ENOM,
:ENMA,:ENKH,:DRM1,:DRM2,:DRM3,:HMEH,:CODM,:FLAG,:H FLG,:CODV,:CODK,:EMAS,:CODR,
:OZVK,:OZVM,:SAZM,:HEDE,:HZKF,:ELAT,:SAKH,:CDRM,:B IMV,:HEKM,:TAFK,:SMOD,:SJEB,
:STAD,:SASH,:SAZD,:SSRB,:SBSJ,:SDLT,:SNOD,:SFAR,:S ZEN,:SENT,:SBKR,:SMBH,:NIRO,
:TAR,UDF_COPY(:CSAB,1,2)||'00',(:VAZE||:VAZG||:VAZ M),:MHLP,0,'00','00','00',
:YEGM,:CKAN,
udf_copy(:DBAZ,1,4),
udf_copy(:DTAV,1,4),
udf_copy(:DOZV,1,4),
0);
البته ابزاری غیر بصری که برای این کار استفاده می کنم کامپپوننت SqlDirect است میکنم
بشکل زیر
تصویر اولی زمان طراحی
تصویر دوم حین اجراء
khorsandreza
شنبه 12 مرداد 1392, 21:26 عصر
به منظور تست واقعی همین حالا از طریق دستور SP شش میلیون رکورد را با ساختار زیر در مدت 183 ثانیه اضافه کردم ساختار ببینید تازه فایربرد نبود Interbase 7.1 بود
CREATE TABLE NewTestTB (
PKID Integer Not Null,
CESR VARCHAR(11),
SERL VARCHAR(2),
TAR VARCHAR(4),
CODC VARCHAR(9),
CODP VARCHAR(13),
CODV VARCHAR(13),
SHOB VARCHAR(4),
SHKH VARCHAR(4),
MHLV VARCHAR(6),
TARB VARCHAR(6),
TGHE VARCHAR(3),
MABG VARCHAR(9),
MKAS VARCHAR(9),
KOLB VARCHAR(9),
ALBV VARCHAR(9),
CODB VARCHAR(4),
SHOM VARCHAR(8),
NKS VARCHAR(30),
TKS VARCHAR(12),
OLAV VARCHAR(1),
VAZE VARCHAR(6),
SAZM VARCHAR(1),
CSAB VARCHAR(4),
MBG VARCHAR(9),
OS_CODE VARCHAR(4)
);
CREATE INDEX NewTestTBTAR_IDX ON NewTestTB(TAR);
CREATE INDEX NewTestTB_IDX ON NewTestTB(CESR, SERL, TAR);
شکل دستور افزودن
INSERT INTO NewTestTB(CESR,SERL,TAR,CODC,CODP,CODV,SHOB,SHKH,M HLV,TARB,TGHE,MABG,MKAS,KOLB,ALBV,CODB,SHOM,NKS,TK S,OLAV,VAZE,SAZM,CSAB,MBG,OS_CODE)
Select CESR,SERL,TAR,CODC,CODP,CODV,SHOB,SHKH,MHLV,TARB,T GHE,MABG,MKAS,KOLB,ALBV,CODB,SHOM,NKS,TKS,OLAV,VAZ E,SAZM,CSAB,MBG,OS_CODE From IN_200
که یک تریگر و یک GENERATOR نیر اکتیو بودند که GENERATOR ستون بنام PK_ID را بصور خودکار شماره گذاری می کند که آن ستون در اینسرت منظور نشده
این هم ساختار دیتابیس من است
CREATE DATABASE "localhost:E:\MVF.gdb" USER "SYSDBA" PASSWORD "masterkey" PAGE_SIZE 4096 ;
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.