如何验证海量文件名sql?
How validate massive files name sql?
我需要验证文件名是否已上传到我的 table "TBL_PAGO_DIARIO_Nextel"。
开始,我已经有一个 table,其中包含我从 SSIS 上传的文件的名称
table 看起来像 :
tbl_filenames
RC196012070801
RC196017080401
如果它们已经在我的 table "TBL_PAGO_DIARIO_Nextel" 上,我需要验证它们中的每一个 "RC196012070801,RC196017080401"。
我有想法用存储过程来做,但我不知道具体怎么做
因为例如,如果第一个已经在 table "TBL_PAGO_DIARIO_Nextel" 上输入,则不应插入它并仅显示一条消息并继续第二个和继续。
我现在正在做:
create procedure sp_validateFile_Entel
@nomfile varchar(14)
as
declare @ncant int
select @ncant = count(*) from TBL_PAGO_DIARIO_Nextel where s_Empresa_Code = 'cperu' and s_Nombre_Vol = @nomfile
这只会接受一个文件,我不需要它。我需要一对一阅读并验证其中一些是否收费请帮助我。
谢谢!!!
选项 1
如果文件不存在,则一次只插入一个文件
IF OBJECT_ID('dbo.usp_validateFile_Entel') IS NULL
EXEC ('CREATE PROCEDURE dbo.usp_validateFile_Entel AS RETURN 0;');
GO
ALTER PROCEDURE dbo.usp_validateFile_Entel
@nomfile VARCHAR(14)
AS
BEGIN
--Only insert new record if @nomfile does NOT exist already
IF NOT EXISTS ( SELECT 1 FROM TBL_PAGO_DIARIO_Nextel WHERE s_Empresa_Code = 'cperu' AND s_Nombre_Vol = @nomfile )
BEGIN
INSERT INTO TBL_PAGO_DIARIO_Nextel(
s_Empresa_Code, s_Nombre_Vol
)
VALUES(
'cperu', @nomfile
);
END;
END
选项 2
使用现有 table [tbl_filenames]
中的数据插入
--Create the tables
IF OBJECT_ID('TBL_PAGO_DIARIO_Nextel','U') IS NOT NULL
DROP TABLE TBL_PAGO_DIARIO_Nextel;
IF OBJECT_ID('tbl_filenames','U') IS NOT NULL
DROP TABLE tbl_filenames;
CREATE TABLE TBL_PAGO_DIARIO_Nextel ( s_Empresa_Code VARCHAR(20), s_Nombre_Vol VARCHAR(14) )
CREATE TABLE tbl_filenames ( FileNames VARCHAR(14))
--Insert some temp values
INSERT INTO dbo.tbl_filenames ( FileNames )
VALUES ('RC196012070801'), ('RC196012070801' )
--Create the Procedure
IF OBJECT_ID('dbo.usp_validateFile_Entel') IS NULL
EXEC ('CREATE PROCEDURE dbo.usp_validateFile_Entel AS RETURN 0;');
GO
ALTER PROCEDURE dbo.usp_validateFile_Entel
--Input Parameters
AS
BEGIN
--Only exist if data doesn't exist already
INSERT INTO TBL_PAGO_DIARIO_Nextel(
s_Empresa_Code, s_Nombre_Vol
)
SELECT 'cperu', T.FileNames
FROM
dbo.tbl_filenames T
WHERE
NOT EXISTS
( SELECT P.s_Nombre_Vol
FROM TBL_PAGO_DIARIO_Nextel P
WHERE P.s_Empresa_Code = 'cperu'
AND P.s_Nombre_Vol = T.FileNames
)
END ;
GO
--Exexute the Procedure
EXEC dbo.usp_validateFile_Entel
--Check the Results in the table
SELECT * FROM TBL_PAGO_DIARIO_Nextel
--Drop the tables
IF OBJECT_ID('TBL_PAGO_DIARIO_Nextel','U') IS NOT NULL
DROP TABLE TBL_PAGO_DIARIO_Nextel;
IF OBJECT_ID('tbl_filenames','U') IS NOT NULL
DROP TABLE tbl_filenames;
我需要验证文件名是否已上传到我的 table "TBL_PAGO_DIARIO_Nextel"。
开始,我已经有一个 table,其中包含我从 SSIS 上传的文件的名称
table 看起来像 :
tbl_filenames
RC196012070801
RC196017080401
如果它们已经在我的 table "TBL_PAGO_DIARIO_Nextel" 上,我需要验证它们中的每一个 "RC196012070801,RC196017080401"。 我有想法用存储过程来做,但我不知道具体怎么做 因为例如,如果第一个已经在 table "TBL_PAGO_DIARIO_Nextel" 上输入,则不应插入它并仅显示一条消息并继续第二个和继续。
我现在正在做:
create procedure sp_validateFile_Entel
@nomfile varchar(14)
as
declare @ncant int
select @ncant = count(*) from TBL_PAGO_DIARIO_Nextel where s_Empresa_Code = 'cperu' and s_Nombre_Vol = @nomfile
这只会接受一个文件,我不需要它。我需要一对一阅读并验证其中一些是否收费请帮助我。
谢谢!!!
选项 1 如果文件不存在,则一次只插入一个文件
IF OBJECT_ID('dbo.usp_validateFile_Entel') IS NULL
EXEC ('CREATE PROCEDURE dbo.usp_validateFile_Entel AS RETURN 0;');
GO
ALTER PROCEDURE dbo.usp_validateFile_Entel
@nomfile VARCHAR(14)
AS
BEGIN
--Only insert new record if @nomfile does NOT exist already
IF NOT EXISTS ( SELECT 1 FROM TBL_PAGO_DIARIO_Nextel WHERE s_Empresa_Code = 'cperu' AND s_Nombre_Vol = @nomfile )
BEGIN
INSERT INTO TBL_PAGO_DIARIO_Nextel(
s_Empresa_Code, s_Nombre_Vol
)
VALUES(
'cperu', @nomfile
);
END;
END
选项 2 使用现有 table [tbl_filenames]
中的数据插入--Create the tables
IF OBJECT_ID('TBL_PAGO_DIARIO_Nextel','U') IS NOT NULL
DROP TABLE TBL_PAGO_DIARIO_Nextel;
IF OBJECT_ID('tbl_filenames','U') IS NOT NULL
DROP TABLE tbl_filenames;
CREATE TABLE TBL_PAGO_DIARIO_Nextel ( s_Empresa_Code VARCHAR(20), s_Nombre_Vol VARCHAR(14) )
CREATE TABLE tbl_filenames ( FileNames VARCHAR(14))
--Insert some temp values
INSERT INTO dbo.tbl_filenames ( FileNames )
VALUES ('RC196012070801'), ('RC196012070801' )
--Create the Procedure
IF OBJECT_ID('dbo.usp_validateFile_Entel') IS NULL
EXEC ('CREATE PROCEDURE dbo.usp_validateFile_Entel AS RETURN 0;');
GO
ALTER PROCEDURE dbo.usp_validateFile_Entel
--Input Parameters
AS
BEGIN
--Only exist if data doesn't exist already
INSERT INTO TBL_PAGO_DIARIO_Nextel(
s_Empresa_Code, s_Nombre_Vol
)
SELECT 'cperu', T.FileNames
FROM
dbo.tbl_filenames T
WHERE
NOT EXISTS
( SELECT P.s_Nombre_Vol
FROM TBL_PAGO_DIARIO_Nextel P
WHERE P.s_Empresa_Code = 'cperu'
AND P.s_Nombre_Vol = T.FileNames
)
END ;
GO
--Exexute the Procedure
EXEC dbo.usp_validateFile_Entel
--Check the Results in the table
SELECT * FROM TBL_PAGO_DIARIO_Nextel
--Drop the tables
IF OBJECT_ID('TBL_PAGO_DIARIO_Nextel','U') IS NOT NULL
DROP TABLE TBL_PAGO_DIARIO_Nextel;
IF OBJECT_ID('tbl_filenames','U') IS NOT NULL
DROP TABLE tbl_filenames;