--创建集团数据临时表,保存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
转载于:https://my.oschina.net/TanShengHua/blog/188028