小弟有个关于DTS数据转换的问题如下:
原来使用SQL2000可以直接用DTS转换,现在用2005,也想用DTS转换,所以写了个动态库,可以支持SQL到TXT,SQL到ORACLE,Oracle到SQL,TXT到SQL,TXT到ORACLE的转化~现在不同数据源之间的转化已经实现,在TXT到数据库之间的转化遇到了问题:
报错是说文本文件格式定义不完整,导致数据导入/导出失败,现在想请教TXT的文本格式如何设置,另外,如果同时导入/导出300W条数据,是否有优化算法?请各位给予解答~多谢~
调试欢乐多
因为需求要生成固定格式的文件,所以才从程序设计角度考虑定义固定文本文件,
数据导入导出如一个大商场的所有会员数据,仅仅需要导出一次所有会员数据,
以后的增量下载即可,生成txt仅仅是备份和方便工作人员查看等。
TThreadInserData=class(TThread) //自定義線程類
private
Adstore:TADOStoredProc; //自定義執行存儲過程組件
public
constructor Create; //自定義線程初始化
protected
procedure Execute;override; //自定義線程構造器執行方法
end;constructor TThreadInserData.Create;
begin
inherited Create(False);
Adstore:=TADOStoredProc.Create(nil);
Adstore.Connection:=sys_datamodule.con1;
Adstore.ProcedureName:='SP_WKO_SCHEDULE';
end; procedure TThreadInserData.Execute;
begin
CoInitialize(nil);
Adstore.ExecProc;
CoUninitialize;
end;procedure Twko_imp_f.Button1Click(Sender: TObject);
begin
inherited;
if rzbuttonedit1.Text <>'' then
begin
if (ExtractFileExt(RzButtonEdit1.Text)<>'.xls') then
begin
MessageDlg('請選擇要導入的Excel檔案!',mtWarning,[mbOK],0);
RzButtonEdit1.Clear;
end
else
begin
ADOQuery1.Close;
ADOQuery1.SQL.Text:='TRUNCATE TABLE TMP_WKO_ORDER';
ADOQuery1.ExecSQL;
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('SELECT * FROM TMP_WKO_ORDER');
ADOQuery1.Open;
SMImportFromXLS.SourceFileName:=RzButtonEdit1.Text;
SMImportFromXLS.Mappings.Clear;
SMImportFromXLS.Mappings.Add('WKO_BP=A');
SMImportFromXLS.Mappings.Add('WKO_ITEMNO=B');
SMImportFromXLS.Mappings.Add('WKO_DESC=C');
SMImportFromXLS.Mappings.Add('WKO_TYPE=D');
SMImportFromXLS.Mappings.Add('WKO_ORDERNO=E');
SMImportFromXLS.Mappings.Add('WKO_STATUS=F');
SMImportFromXLS.Mappings.Add('WKO_CBZX=G');
SMImportFromXLS.Mappings.Add('WKO_GX=H');
SMImportFromXLS.Mappings.Add('WKO_QTY=I');
SMImportFromXLS.Mappings.Add('WKO_TIMES=L');
SMImportFromXLS.Mappings.Add('WKO_LABOR=N');
SMImportFromXLS.Mappings.Add('WKO_PLANNER=O');
SMImportFromXLS.Mappings.Add('WKO_ODATE=P');
go_but.OnClick(Sender);
try
SMImportFromXLS.Execute;
except
MessageDlg('數據導入失敗檢查檔案!',mtWarning,[mbOK],0);
Exit;
end;
ADOStoredProc1.ExecProc;
lab_mag.Caption:='數據正在後臺處理中';
TThreadInserData.Create; //執行自定義線程
Timer3.Enabled:=True;
ProgressBar1.Position:=100;
end;
end
else
begin
MessageDlg('請選擇要導入的Excel檔案!',mtWarning,[mbOK],0);
end;
end;