我前几天到一家软件公司去应聘,那个项目经理就出了一道题(2个小时做完):开发工具随便你选,20分钟内通过读取TXT文本文件向数据库一表内插入6千万条数据(该表有8 个字段)。我知道他是考数据算法问题,不知道这个算不算BT!!!请教高手指教!!!!

解决方案 »

  1.   

    有啥变态的??让你插你就插呗..读txt也不是什么难事..
    没看太明白
      

  2.   

    这个面试题我觉得是在考你对于系统操作所耗费的时间做的一个测试。
    如果用循环,每读一条数据,然后往数据库里插一条,那肯定不行的。因为读取txt文件要花费时间,连接数据库并操作也需要花费时间。
    如果一次性全部读取放在内存,又很耗费资源,可能会导致死机。不可取。解决方案:1、建立数据库连接,不断开
              2、新建一个事务(一定要记得是用事务)
              3、一次性取得若干数据(最好是32bite的倍数),然后,插入数据。
              4、循环操作3步骤直到所有数据插入完成。
              5、结束事务(如果中途出错则回滚事务)
              6、断开数据库连接(非常重要,不然会占用资源导致出现问题。)
              
      

  3.   

    有啥变态的??让你插你就插呗..读txt也不是什么难事.. 
    没看太明白
    ---------------------------------------------------------
    既然知道就应该和大家说说
      

  4.   

    非常简单,用SQL SERVER 的schema设置,一下就完成了。
      

  5.   

    [test.txt]
    colnameheader=true
    format=Delimited(@)
    col1 = "tb1" text                     
    col2 = "tb2" text                        
    col3 = "tb3" text                            
    col4 = "tb4" text                  
    col5 = "tb5" text                  
    col6 = "tb6" text  然后调用
    SET @strSQL =
             ' 
     INSERT INTO temptable
     SELECT * FROM
     OPENROWSET(''MSDASQL'',''Driver={Microsoft Text Driver (*.txt; *.csv)};DEFAULTDIR='+@Filepath+';Extensions=CSV;'',
     ''SELECT * FROM [test.txt]'')'Exec (@strSQL)     
    Filepath是文件路径,如果服务器配置够好的话,应该用这个方法不成问题,你试试!