--创建集团数据临时表,保存jt_*.txt格式中的数据 CREATE TABLE TBL_TEMP_JT ( GROUP_CODE VARCHAR(60), GROUP_Name VARCHAR(128), BUISNESS_TYPE_NAME VARCHAR(60), SERVICE_USER VARCHAR(60), CREATE_DATE VARCHAR(60), BELONG_REGION VARCHAR(100), BELONG_AREA VARCHAR(100), ACCOUNT_MANAGER VARCHAR(60) ) --创建集团产品临时表,保存jtcp_*.txt格式中的数据 -----注意:一些列不确定是那个表中的列,命名为 L* CREATE TABLE TBL_TEMP_JTCP ( GROUP_CODE VARCHAR(60), PRODUCT_CODE VARCHAR(60), PRODUCT_TYPE_NAME VARCHAR(60), GROUP_Name VARCHAR(128), L1 VARCHAR(60), SERVICE_USER VARCHAR(60), CREATE_DATE VARCHAR(60), L2 VARCHAR(60), L3 VARCHAR(60), L4 VARCHAR(60) ) --导入处理 declare @path nvarchar(266) set @path='\\192.168.0.42\11daoru 1qaz432!/user:192.168.0.42\ftp2' --得到该目录下的所有文件 if right(@path,1)<>'\' set @path=@path+'\' create table #t(fn nvarchar(1000),depth int,isfile int) insert #t exec czyd..xp_dirtree @path=@path,@depth=1,@file=1 --定义游标,逐个导入文件 declare @s varchar(8000) declare tb cursor local for select 'bulk insert ' +case when fn like 'jtcp_%.txt' then 'TBL_TEMP_JTCP from '''+@path+fn+''' with (FIELDTERMINATOR =''|' else 'TBL_TEMP_JT from '''+@path+fn+''' with (FIELDTERMINATOR = ''|' end+''')' from #t where isfile=1 and fn not in('jt_bcp.txt','jtcp_bcp.txt') and (fn like 'jt_%.txt' or fn like 'jtcp_%.txt') open tb fetch tb into @s while @@fetch_status=0 begin exec(@s) fetch tb into @s end close tb deallocate tb drop table #t ------------------------------------------------------- -----导入集团工单数据 -----导入数据到 tbl_group_buisness_info 集团工单表 -----导入数据到 tbl_group_data 集团工单数据表 ------------------------------------------------------- declare @GROUP_CODE VARCHAR(60), @GROUP_Name VARCHAR(128), @BUISNESS_TYPE_NAME VARCHAR(60), @SERVICE_USER VARCHAR(60), @CREATE_DATE VARCHAR(60), @BELONG_REGION VARCHAR(100), @BELONG_AREA VARCHAR(100), @ACCOUNT_MANAGER VARCHAR(60), @BUISNESS_TYPE_ID VARCHAR(10), @BRANCH_ID VARCHAR(10); declare cr_cursor cursor --1.定义游标 for -----------------------从tbl_temp_jt表中查询数据 select t.GROUP_CODE,t.GROUP_Name,t.BUISNESS_TYPE_NAME,t.SERVICE_USER,t.CREATE_DATE,t.BELONG_REGION,t.BELONG_AREA,t.ACCOUNT_MANAGER,b.id ,r.id from tbl_temp_jt t left join tbl_group_business_type b on t.BUISNESS_TYPE_NAME = b.name left join T_BRANCH r on t.BELONG_REGION = r.name open cr_cursor --2.打开游标 --3.提取游标 fetch From cr_cursor into @GROUP_CODE,@GROUP_Name,@BUISNESS_TYPE_NAME,@SERVICE_USER,@CREATE_DATE,@BELONG_REGION,@BELONG_AREA,@ACCOUNT_MANAGER,@BUISNESS_TYPE_ID,@BRANCH_ID while @@fetch_status=0 begin --将结果打印到控制台 print @GROUP_CODE print @GROUP_Name print @BUISNESS_TYPE_NAME print @SERVICE_USER print @CREATE_DATE print @BELONG_REGION print @BELONG_AREA print @ACCOUNT_MANAGER print @BUISNESS_TYPE_ID print @BRANCH_ID ----导入到 tbl_group_buisness_info 集团工单表 insert into TEST01(group_code,BUISNESS_TYPE,MATERIAL_TYPE,ACCOUNT_MANAGER,PROCESS_DATE,HAS_SIGNATURE,PROTOCOL_USER,PROCEDURE_IS_ALL,MATERIRL_IS_ALL,CHECK_FLAG,STATE,IMAGE_STATE,BRANCH_ID,AUDITS_PERSON,befrom) values(@GROUP_CODE,@BUISNESS_TYPE_ID,'0',@ACCOUNT_MANAGER,@CREATE_DATE,'0',@SERVICE_USER,'0','0','1','1','1',@BRANCH_ID,'0','1') ----导入到 tbl_group_data 集团工单数据表 insert into TEST02(GROUP_CODE,GROUP_Name,SERVICE_USER,CREATE_DATE,BELONG_REGION,BELONG_AREA) values(@GROUP_CODE,@GROUP_Name,@SERVICE_USER,@CREATE_DATE,@BELONG_REGION,@BELONG_AREA) --给游标赋值 fetch next From cr_cursor into @GROUP_CODE,@GROUP_Name,@BUISNESS_TYPE_NAME,@SERVICE_USER,@CREATE_DATE,@BELONG_REGION,@BELONG_AREA,@ACCOUNT_MANAGER,@BUISNESS_TYPE_ID,@BRANCH_ID end; close cr_cursor --4.关闭游标 deallocate cr_cursor --5.释放游标 --删除临时表 delete TBL_TEMP_JT; delete TBL_TEMP_JTCP; ---------------------------------------------------------------------- -----导入集团产品工单数据,亦然,由于不清楚字段,所以没有写出来 -----导入集团产品工单数据是将TBL_TEMP_JTCP表中的数据查询出来,导入 -----到集团产品相关表中; -----此外,需要注意的是:数据中有些操作类型或业务类型在数据库表中是不 -----存在,需要先将不操作类型或业务类型手动添加到类型表,再做导入操作 ----------------------------------------------------------------------- ---备份本地文件夹到远程计算机 CREATE PROC bakup_Folder_Pro -- 备份本地文件夹到远程计算机 -- 包括备份数据库 AS DECLARE @dbName VARCHAR(50) -- 需备份的数据名称 DECLARE @fileTitle VARCHAR(200) -- 文件标题 DECLARE @folder VARCHAR(200) -- 文件夹名称 DECLARE @fileName VARCHAR(200) -- 备份文件名 DECLARE @localFolderPath VARCHAR(200) -- 本地文件夹路径 DECLARE @localBckPath VARCHAR(200) -- 本地备份文件夹路径 DECLARE @netPath VARCHAR(200) -- 远程文件夹路径 DECLARE @netFolderPath VARCHAR(200) -- 新建的远程文件夹路径 DECLARE @netUserName VARCHAR(200) -- 远程计算机用户名 DECLARE @netUserPwd VARCHAR(200) -- 远程计算机密码 DECLARE @netSqlStr VARCHAR(500) -- 映射字符串 DECLARE @copySqlStr VARCHAR(500) -- copy到远程计算机字符串 DECLARE @delSqlStr VARCHAR(500) -- del本地备份文件字符串 DECLARE @flag VARCHAR(50) -- 标记,是否删除本机文件 SET @dbName = 'DB_ESPC' SET @fileTitle = REPLACE(REPLACE(REPLACE(CONVERT(CHAR(20),GETDATE(),120),':',''),' ',''),'-','') SET @folder = @fileTitle -- 文件夹自动生成 SET @fileName = @fileTitle + '.bak' SET @localFolderPath = 'E:\copyFtp2' SET @localBckPath = @localFolderPath+'\bck\'+@fileName SET @netPath = '\\192.168.0.42\11daoru' SET @netFolderPath = @netPath +'\'+@fileTitle SET @netUserName = '192.168.0.42\ftp2' SET @netUserPwd = '1qaz432!' SET @netSqlStr = 'net use ' + @netPath + ' "' + @netUserPwd + '" /user:' + @netUserName SET @copySqlStr = 'XCOPY ' + @localFolderPath + ' /i/e ' + @netFolderPath SET @delSqlStr = 'DEL ' + @localBckPath SET @flag = 'True' -- 将数据库备份到本机目录下,WITH INIT 表示覆盖相同文件 BACKUP DATABASE @dbName TO DISK=@localBckPath WITH INIT -- 映射 EXEC czyd..xp_cmdshell @copySqlStr -- 将本机文件夹copy到远程计算机 EXEC czyd..xp_cmdshell @netSqlStr -- 删除映射 EXEC czyd..xp_cmdshell 'net use * /del /y' -- 选择是否删除本机文件 IF(@flag = 'True') EXEC czud..xp_cmdshell @delSqlStr GO