Different date type table combination and Bulk import data
create procedure [dbo].[Table_Combination]
@ORG_Order_Table varchar(128),
@OBJ_Order_Table varchar(128)
as
declare @obj_column_name varchar(128)
declare @obj_column_type varchar(128)
declare @obj_column_length int
declare @org_column_type varchar(128)
declare @org_column_length int
declare @COM_ORDER_TABLE varchar()
set @COM_ORDER_TABLE =@ORG_Order_Table+'_ALL'
declare @sql varchar(4000)
set @sql = 'select * into '+@COM_ORDER_TABLE +' from '+@ORG_Order_Table
exec(@sql)
set @sql='alter table '+@COM_ORDER_TABLE +'
add constraint PK_'+@COM_ORDER_TABLE +' primary key CLUSTERED(委託者コード,注文番号)'
exec(@sql)
set @sql = 'insert into '+@COM_ORDER_TABLE +' select '
declare obj_cur cursor
for
select a.name as column_name,b.name as type_name,a.Max_Length
from sys.columns a
inner join sys.types b
on a.system_type_id=b.system_
inner join sys.objects c
on a.object_id = c.object_id
where c.name=@OBJ_Order_Table
order by a.column_id
open obj_cur
fetch next from obj_cur
into @obj_column_name,@obj_column_
while @@fetch_status = 0
begin
select @org_column_type = b.name,@org_column=a.Max_
from sys.columns a
inner join sys.types b
on a.system_type_id=b.system_
inner join sys.objects c
on a.object_id=c.object_id
where c.name=@ORG_Order_Table and a.name=@obj_column_name
if @org_column_type<>@obj_column_
begin
if(@org_column_type='char' or @org_column_type='varchar' or @org_column_type='nvarchar' )
begin
set @sql = @sql+'cast('+@obj_column_name+
(5))+')),'
end
else if (@org_column_type='datetime')
begin
set @sql = @sql+'case '
set @sql = @sql+'when '+@obj_column_name+' is null then null '
set @sql = @sql+'when '+@obj_column_name+'='''' then null '
set @sql = @sql+'cast(left('+@obj_column_
set @sql = ' end,'
end
else
begin
set @sql = @sql+'cast('+@obj_column_name+
end
end
fetch next from obj_cur
into @obj_column_name,@obj_column_
end
set @sql=left(@sql,len(@sql)-1)+'
where not exists (select 委託コード,注文番号 from '+@COM_ORDER_TABLE +'
where 委託コード=a.委託コード and 注文番号=a注文番号.'
create proc [dbo].[DataImport]
@tableName varchar(128),
@filePath varchar(500),
@pattern varchar(100)
as
set quoted_identifier off
declare @query varchar(1000)
declare @maxl int
declare @countl int
declare @fileName varchar(100)
set @countl = 0
create table #x (name varchar(200))
set @query = 'master.dbo.xp_cmdshell "dir '+@filePath+@pattern+ ' /b"'
print @query
insert #x exec (@query)
delete from #x where name is null
select identity(int,1,1) as ID,name into #y from #x
drop table #x
set @maxl = (select max(ID) from #y)
print @maxl
print @countl
while @countl <=@maxl
begin
set @countl=@countl+1
set @filename = (select name from #y where [id] = @countl)
set @query = 'bulk insert '+@tableName+' from "'+@filePath+@filename+'" with(fieldterminator='','',
print @query
exec (@query)
end
drop table #y
标签: SQL

0 条评论:
发表评论
订阅 博文评论 [Atom]
<< 主页