1 100W条数据 要求四十秒钟导入到SqlServer中  请问如何做?2 1900-2010年所有星期日的日期 怎么最快的挑选出来?3 SqlServer中一个联合查询出来的结果集 没有主键 请问如何分页?小弟菜鸟 请教高手解答

解决方案 »

  1.   

    1、写一个存储过程,存储过程采用预编译的sql语句形式,如insert into table values(@value1)对于预编译sql语句效率很高的
    2、如果用程序,写个循环就可以了。
    3、如果是sql2005,可以采用ROW_NUMBER() ,如果是sql2000可以创建一个存储过程,存储过程里面采用自增的ID,数字类型,就可以了
      

  2.   

    1、在SQL中用insert into table opendatasource('oracle')来得到一个结果集插入,对于楼上的写个存储过程这个说法,存储过程是比SQL效率高,不过那是在反复调用的情况下。汗一个。。
    2、先找出1900年后第一个星期天日期,然后循环,每次日期加7天即可。
    3、有没有主键对分页好像是没什么影响。
      

  3.   

    declare @datetime datetime,@weekday char(6) 
    set @datetime='2009-1-1' 
    while @datetime <='2009-12-31' 
    begin 
    select @weekday=datename(weekday,@datetime) 
    if @weekday='星期日' insert SatSun([date],[weekday]) values(@datetime,'星期天') 
    select @datetime=dateadd(day,1,@datetime) 
    end 
    go 
     
    通过分页存储过程分页
      

  4.   

    1:先把数据写入dataset。然后利用dataset更新数据库?
      

  5.   

    1 100W条数据 要求四十秒钟导入到SqlServer中  请问如何做? 
     用 bulk insert
    2 1900-2010年所有星期日的日期 怎么最快的挑选出来? 
      dateadd datediff 3 SqlServer中一个联合查询出来的结果集 没有主键 请问如何分页? 
    用 row_number()
      

  6.   


    1 100W条数据 要求四十秒钟导入到SqlServer中  请问如何做?
    用 bulk insert SQLSERVER底层接口MICROSOFT.JET.OLEDB.4.0
    2 1900-2010年所有星期日的日期 怎么最快的挑选出来?
      dateadd datediff3 SqlServer中一个联合查询出来的结果集 没有主键 请问如何分页?
    用 row_number()
      

  7.   

    1 100W条数据 要求四十秒钟导入到SqlServer中  请问如何做?   用BCP导入,我估计还用不了40秒
     
      

  8.   

    这个估计是什么错误啊。    
    EXEC master..xp_cmdshell 'bcp [jxdjhz] IN F:\jxdjhz.xls  -c -q -S"KW" -U"sa" -P""'output                                                                                                                                                                                                                                                          
    --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 
    SQLState = 08001, NativeError = 17
    Error = [Microsoft][ODBC SQL Server Driver][DBNETLIB]SQL Server 不存在或访问被拒绝
    SQLState = 01000, NativeError = 53
    Warning = [Microsoft][ODBC SQL Server Driver][DBNETLIB]ConnectionOpen (Connect()).
    NULL(所影响的行数为 5 行)
      

  9.   


    bulk insert sk..jxdjhz from 'e:\jxdjhz.xls' 
    WITH (
    BATCHSIZE = 100,
    CODEPAGE = 'raw',
    datafiletype = 'char',
    FIELDTERMINATOR = '\t',
    FIRSTROW = 1,
    --FIRE_TRIGGERS = '触发器名称'   执行过程中执行的触发器操作
    --KEEPIDENTITY       不忽略标识列
    --KEEPNULLS 保留空值
    --KILOBYTES_PER_BATCH [ = kilobytes_per_batch ]  指定每个批处理中数据的近似千字节数(KB)
    --LASTROW [ = last_row ] 最后一行行号。默认为0,最后一行
    --MAXERRORS [ = max_errors ] 指定在大容量复制操作取消之前可能产生的错误的最大数目
    ROWTERMINATOR = '\n',
    TABLOCK
    )
    服务器: 消息 4832,级别 16,状态 1,行 1
    大容量插入: 在数据文件中遇到意外的文件结尾 (EOF)。
    服务器: 消息 7399,级别 16,状态 1,行 1
    OLE DB 提供程序 'STREAM' 报错。提供程序未给出有关错误的任何信息。
    语句已终止。
      

  10.   

     1900-2010年所有星期日的日期 怎么最快的挑选出来?  这个题目的意思是 他让自己写算法 计算出来 而不是用sqlserver自带的方法
      

  11.   

    第一个问题,导入大量数据,我有个建议使用SSIS(SQL SERVER Intergration Services).还是不错的。设定好数据源,然后匹配下目标的各个列.然后执行.速度还是很快的。后面两个没想法.
      

  12.   

    第一个不清楚。后面两个都有过接触
    我觉得第二个应该是靠算法吧。365/7*(2010-1900)应该可以计算出来吧
    365/7得到的是一年有个星期,但一个星期只有一个星期日,即可理解为365/7是一年类有多少个星期。
    余数不算,只有能被7整除的才算。分页方法用下面的方法应该可以实现
    SELECT *
    FROM 
    (SELECT ROW_NUMBER() OVER (ORDER BY UnitPrice,id)
    AS PriceRank,* FROM books)
    AS Rank
    WHERE PriceRank BETWEEN 21 AND 30
    ORDER BY UnitPrice,id
      

  13.   


    1.用批处理的方式,或者上面你说的BCP2.实际上只要找到第一个星期日后面就算了,加7就可以了3.SQL2000-->TOP   SQL 2005-->rownumer()