求delphi编程文本文件导入数据表的方法(列中间用tab键分割)? 现在采用的方法是按行读取文本文件,然后用tStringList的Delimiter和DelimitedText来获取每一列的值,但当中间有列的值为空时读取不准确。有没有更好的办法可以一次性的写入表?

解决方案 »

  1.   

    導入到什麼數據表呀.SQL Server用Dts不錯呀.或者
    ADOConnection.Connected := True;
    ADOConnection.Execute('Select * Into abcd From [Text;Database=c:\temp].aaaa.txt');
      

  2.   

    用ADO连接TEXT型数据库,就能够对你的源文本文件进行表的操作了
      

  3.   

    to 樓主關於TEXT數據庫,在《Delphi 5.0開發人員指南》中有一段說明
    說是TEXT還需要一個叫schema.ini的格式文件說明其說明可以參照MSDN
    http://msdn.microsoft.com/library/default.asp?url=/library/en-us/odbc/htm/odbcjetschema_ini_file.asp對於,你的分隔符號為TAB字符,我這裡有一個小小的例子;指字你的文件名
    [A.TXT]
    ;設置其分隔字符為TAB
    Format=TabDelimited將上面的內容拷入schema.ini文件中即可
    注意其路徑要與TXT同一目錄其SQL語句如下:
    Select * From OpenDataSource('Microsoft.Jet.OLEDB.4.0',
     'Data Source="e:\run\";User ID=Admin;Password=;Extended properties=Text')...[a#txt]請注意[a#txt]部分,在SQL語句中,一個文件名的“.”分隔要換成“#”
      

  4.   

    如要導入數據庫,可以用Select * Into Tablename From ...
    來實現該方法在SQLServer 2K中試驗通過
      

  5.   

    procedure TForm1.Button3Click(Sender: TObject);
    const
      Source = 'a'#8''#8''#8'dddd';
    var
      s : TStringList;
      i,currPos,sourceLen:integer;
      subStr : string;
    begin
      s:=TSTringList.Create;
      subStr :='';
      currPos := 1;
      sourceLen := length(Source);
      while(currPos <= sourceLen) do
      begin
        if Source[currPos] = #8 then
        begin
          s.Add(subStr);
          subStr := '';
        end
        else
          subStr := subStr + Source[currPos];
        inc(currPos);
      end;
      if SourceLen > 0 then
        s.Add(subStr);  for i:=0 to s.Count - 1 do
      begin
        ShowMessage(s[i]);
      end;
    end;