小弟有个关于DTS数据转换的问题如下:
原来使用SQL2000可以直接用DTS转换,现在用2005,也想用DTS转换,所以写了个动态库,可以支持SQL到TXT,SQL到ORACLE,Oracle到SQL,TXT到SQL,TXT到ORACLE的转化~现在不同数据源之间的转化已经实现,在TXT到数据库之间的转化遇到了问题:
报错是说文本文件格式定义不完整,导致数据导入/导出失败,现在想请教TXT的文本格式如何设置,另外,如果同时导入/导出300W条数据,是否有优化算法?请各位给予解答~多谢~

解决方案 »

  1.   

    你用EXCEL做中转比较好  TXT怎么用? 
      

  2.   

    TXT的文本又有什么格式而言?如果从操作角度而言,确实有Tab等格式,但从程序设计角度而言,它只是一种无格式文件同时导入/导出300W条数据?它速度一定很慢,还不如分开处理。个人意见
      

  3.   


    因为需求要生成固定格式的文件,所以才从程序设计角度考虑定义固定文本文件,
    数据导入导出如一个大商场的所有会员数据,仅仅需要导出一次所有会员数据,
    以后的增量下载即可,生成txt仅仅是备份和方便工作人员查看等。
      

  4.   

    type
      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;