日期:2014-05-18  浏览次数:20464 次

SQL批量导入数据,哪里错了?帮忙看下
SQL code
DECLARE @length int
DECLARE @name int
SET @length = 2
set @name=08
while @name<=31
BEGIN
    declare @strSql varchar(500)
    declare @_str varchar(10)
    set @_str=REPLICATE('0',@length-DATALENGTH(CONVERT(VARCHAR,@name)))+CONVERT(VARCHAR,@name)
    set @strSql= 'insert into S201001'+@_str+'select * from DATA2010.dbo.S201001' +@_str
    set @name = @name+1
    execute(@strSql)
End


消息 102,级别 15,状态 1,第 1 行
'*' 附近有语法错误。

------解决方案--------------------
SQL code


DECLARE @length int
DECLARE @name int
SET @length = 2
set @name=08
while @name<=31
BEGIN
    declare @strSql varchar(500)
    declare @_str varchar(10)
    set @_str=REPLICATE('0',@length-DATALENGTH(CONVERT(VARCHAR,@name)))+CONVERT(VARCHAR,@name)
    set @strSql= 'insert into S201001'+@_str+' /*这里少空格*/select * from DATA2010.dbo.S201001' +@_str
    set @name = @name+1
    execute(@strSql)
End

------解决方案--------------------
select 和表格名字连在一起了,中间要添加一个空格。
------解决方案--------------------
探讨
引用:
SQL code


DECLARE @length int
DECLARE @name int
SET @length = 2
set @name=08
while @name<=31
BEGIN
declare @strSql varchar(500)
declare @_str varchar(10)
set @_str=REPLICATE('……

------解决方案--------------------
探讨

引用:
SQL code


DECLARE @length int
DECLARE @name int
SET @length = 2
set @name=08
while @name<=31
BEGIN
declare @strSql varchar(500)
declare @_str varchar(10)
set @_str=REPLICATE……

------解决方案--------------------
DBCC SHRINKFILE (2, 0)

第一个参数是文件的标识 (ID) 号。若要获得文件 ID,请使用 FILE_IDEX 系统函数,或查询当前数据库中的 sys.database_files 目录视图。

第二个是收缩后的大小,这个可以随意指定
------解决方案--------------------
可以把SQL语句print出来,然后执行以下,问题就很明显了!
SQL code
print(@strSql)