巨大的粉丝,刚刚注册,因为我被卡住了。我有一组CSV文件,通过电子邮件发送并下载并自动保存以供夜间报告使用。如果其中一个文件丢失,则作业失败,我希望保持报告不发送,并希望将此操作建立在日志上。
以下是我为此创建的SP的开头。导入继续通过几个文件,然后在最后写入主表。我想改变两件事:
将每个导入的结果写入带有时间戳的表和带有true或false的1或0。类似于:IF BULK INSERT SUCCESSFUL THEN INSERT INTO TABLE 'TIMEDATESTAMP','COMPANY NUMBER','1' ELSE (do the same except with 0)
USE [Projects]
GO
/****** Object: StoredProcedure [dbo].[uspTimeAttendanceImport] Script Date: 12/26/2013 15:25:43 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[uspTimeAttendanceImport]
AS
begin
--Create the temp table for staging the data. Delete if it already exist.
IF (OBJECT_ID('tempdb..##tblDailyHoursStaging') IS NOT NULL) DROP TABLE ##tblDailyHoursStaging
create table ##tblDailyHoursStaging
(
strWorkDay VARCHAR(50) NULL,
strEmployeeID VARCHAR(20) NOT NULL,
dtmClockDate VARCHAR(14) NOT NULL,
strCompanyCode VARCHAR(6) NULL,
strDepartmentCode VARCHAR(6) NULL,
strEarningCode VARCHAR(8) NULL,
strEarningType VARCHAR (50) NULL,
lngAmountEarned VARCHAR (20) NULL,
lngHoursWorked VARCHAR(10) NULL
)
--Insert downloaded time clock data COMPANY 1000
BULK
INSERT ##tblDailyHoursStaging
FROM 'D:\TimeAttendanceData\Flash Report 1000.csv'
WITH
(
FIRSTROW = 2,
FIELDTERMINATOR = ',',
ROWTERMINATOR = '\n'
)
答案 0 :(得分:0)
我会为此使用powershell。我假设这是在Windows平台上。通过使用powershell,您只需查看存在的文件。您可以在powershell中使用事务以及try / catch块。使用您提出的解决方案,如果发送新的csv文件,您将需要更改过程。