你要怎么样的快,delphi首先要在文本中取数据,批量的处理就用循环好了。

解决方案 »

  1.   

    如果文本数据的格式很好的话,建议使用sqlldr,自己写一个loader的脚本,然后用delphi写一个调用的程序就好了
    使用delphi在文本中取数据效率比较差
      

  2.   

    我有一个很好的数据集成中间件,能够实现相同或者不同数据库之间的数据转换和同步传输,可以实现从文本文件到数据库之间的传输
    有兴趣的话可以联系:[email protected]
      

  3.   

    to which:
      能给一些例子吗,万分感谢
      

  4.   

    这个帖子上有例子:
    http://bbs.javaejb.com/cgi-bin/topic.cgi?forum=6&topic=3&changemode=1
    不过最好 找本书看看,看1个小时简单的应用就可以搞定了。
    或者自己在百度上搜SQLLDR 例子,找也能找到不少例子
      

  5.   

    我不知道你需要什么样的例子,所以只能给你一些最基本的,都是从Oracle的联机文档里找来的
    使用sql*loader需要有一个控制文件,由控制文件来确定数据文件的格式,然后进行装载,一个控制文件的典型形式如下:
    load data
    infile 'example.dat'    --指出数据文件的名字是example.dat
    into table example      --插入数据到表名及字段名,默认每个字段以逗号来分隔
    fields terminated by ',' optionally enclosed by '"'  
    (col1 char(5),
     col2 char(7))数据文件的格式如下,默认情况下,sql*loader以换行符作为一条记录结束
    example.dat:
    hello,world
    james,bond写好控制文件以后,用sqlldr调用:
    --SQLLDR是一个可执行文件,你必须安装了oracle utility选项才会有这个工具,应该在你oracle的bin目录下
    SQLLDR CONTROL=foo.ctl, LOG=bar.log, BAD=baz.bad, DATA=etc.dat 
       USERID=scott/tiger, ERRORS=999, LOAD=2000, DISCARD=toss.dis,
       DISCARDMAX=5一下是sqlldr的一些参数,直接打sqlldr命令不带参数,就会显示下面的信息
    sqlldr
    ...
    SQL*Loader: Release 9.2.0.1.0 - Production on Wed Feb 27 12:06:17 2002
    (c) Copyright 2002 Oracle Corporation.  All rights reserved.
    Usage: SQLLDR keyword=value [,keyword=value,...]
    Valid Keywords:
        userid -- ORACLE username/password           
       control -- Control file name                  
           log -- Log file name                      
           bad -- Bad file name                      
          data -- Data file name                     
       discard -- Discard file name                  
    discardmax -- Number of discards to allow          (Default all)
          skip -- Number of logical records to skip    (Default 0)
          load -- Number of logical records to load    (Default all)
        errors -- Number of errors to allow            (Default 50)
          rows -- Number of rows in conventional path bind array or between
    direct path data saves
                   (Default: Conventional path 64, Direct path all)
      bindsize -- Size of conventional path bind array in bytes  (Default 256000)
        silent -- Suppress messages during run (header,feedback,errors,discards,partitions)
        direct -- use direct path                      (Default FALSE)
       parfile -- parameter file: name of file that contains parameter specifications
      parallel -- do parallel load                     (Default FALSE)
          file -- File to allocate extents from      
    skip_unusable_indexes -- disallow/allow unusable indexes or index partitions  (Default FALSE)
    skip_index_maintenance -- do not maintain indexes,  affected indexes as unusable  (Default 
    FALSE)
      readsize -- Size of Read buffer                  (Default 1048576)
    external_table -- use external table for load; NOT_USED, GENERATE_ONLY, EXECUTE  (Default NOT_ 
    USED)
    columnarrayrows -- Number of rows for direct path column array  (Default 5000)
    streamsize -- Size of direct path stream buffer in bytes  (Default 256000)
    multithreading -- use multithreading in direct path  
     resumable -- enable or disable resumable for current session  (Default FALSE)
    resumable_name -- text string to help identify resumable statement 
    resumable_timeout -- wait time (in seconds) for RESUMABLE  (Default 7200)
    date_cache -- size (in entries) of date conversion cache  (Default 1000)
    接下来在delphi里调用就不用我写了吧?很累的
      

  6.   

    用delphi在前台调用存储过程就可以了;
    如果单纯为了导数据可以直接对数据库定时运行sqlloader脚本即可
      

  7.   

    每天50万不算很大,建议用sqlldr,效率很高。如果你还想加快速度,还可以分成几个文本文件,同时导入
      

  8.   

    如果数据在客户端(windows),服务器是unix,有办法吗?SQLLDR CONTROL=foo.ctl, LOG=bar.log, BAD=baz.bad, DATA=etc.dat 
       USERID=scott/tiger, ERRORS=999, LOAD=2000, DISCARD=toss.dis,
       DISCARDMAX=5DATA=etc.dat 的路径可以是其他机器吗?客户端的相关目录一定要共享吗?
     
      

  9.   

    可以,文件要共享,并且路径要写全,实际上在客户端运行SQLLDR就行。