1、写一个存储过程,存储过程采用预编译的sql语句形式,如insert into table values(@value1)对于预编译sql语句效率很高的 2、如果用程序,写个循环就可以了。 3、如果是sql2005,可以采用ROW_NUMBER() ,如果是sql2000可以创建一个存储过程,存储过程里面采用自增的ID,数字类型,就可以了
1、在SQL中用insert into table opendatasource('oracle')来得到一个结果集插入,对于楼上的写个存储过程这个说法,存储过程是比SQL效率高,不过那是在反复调用的情况下。汗一个。。 2、先找出1900年后第一个星期天日期,然后循环,每次日期加7天即可。 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
第一个问题,导入大量数据,我有个建议使用SSIS(SQL SERVER Intergration Services).还是不错的。设定好数据源,然后匹配下目标的各个列.然后执行.速度还是很快的。后面两个没想法.
第一个不清楚。后面两个都有过接触 我觉得第二个应该是靠算法吧。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
2、如果用程序,写个循环就可以了。
3、如果是sql2005,可以采用ROW_NUMBER() ,如果是sql2000可以创建一个存储过程,存储过程里面采用自增的ID,数字类型,就可以了
2、先找出1900年后第一个星期天日期,然后循环,每次日期加7天即可。
3、有没有主键对分页好像是没什么影响。
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
通过分页存储过程分页
用 bulk insert
2 1900-2010年所有星期日的日期 怎么最快的挑选出来?
dateadd datediff 3 SqlServer中一个联合查询出来的结果集 没有主键 请问如何分页?
用 row_number()
1 100W条数据 要求四十秒钟导入到SqlServer中 请问如何做?
用 bulk insert SQLSERVER底层接口MICROSOFT.JET.OLEDB.4.0
2 1900-2010年所有星期日的日期 怎么最快的挑选出来?
dateadd datediff3 SqlServer中一个联合查询出来的结果集 没有主键 请问如何分页?
用 row_number()
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 行)
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' 报错。提供程序未给出有关错误的任何信息。
语句已终止。
我觉得第二个应该是靠算法吧。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
1.用批处理的方式,或者上面你说的BCP2.实际上只要找到第一个星期日后面就算了,加7就可以了3.SQL2000-->TOP SQL 2005-->rownumer()