aggiunta progetto DB x C2P con install db locale
This commit is contained in:
@@ -0,0 +1,99 @@
|
||||
|
||||
|
||||
|
||||
|
||||
-- =============================================
|
||||
-- Author: S.E. Locatelli
|
||||
-- Create date: 2013.11.28
|
||||
-- Description: Procedura per import dati in tabelal tmp da file csv
|
||||
--
|
||||
-- TRUNCATE TABLE tmp.ProductionLogRaw_KO
|
||||
--
|
||||
-- =============================================
|
||||
CREATE PROCEDURE [tmp].[importProductionLogRaw]
|
||||
(
|
||||
@fileType NVARCHAR(50) = 'ProductionLogRaw'
|
||||
)
|
||||
AS
|
||||
BEGIN
|
||||
SET NOCOUNT ON;
|
||||
|
||||
-- per Giancarlo: rendere parametrico con esecuzione sql x poter inserire nei parametri il separatore ed il resto? http://www.sqlteam.com/article/using-bulk-insert-to-load-a-text-file
|
||||
|
||||
IF @fileType = 'ProductionLogRaw'
|
||||
BEGIN
|
||||
-- svuoto tabella temp
|
||||
TRUNCATE TABLE tmp.ProductionLogRaw
|
||||
|
||||
-- carico dati bulk!
|
||||
BULK INSERT tmp.ProductionLogRaw
|
||||
FROM 'e:\test\ProductRaw.csv'
|
||||
|
||||
WITH (FIELDTERMINATOR = ';', ROWTERMINATOR = '\n', FIRSTROW = 2, ERRORFILE = 'e:\test\errorProduct.log')
|
||||
--WITH (FIELDTERMINATOR = ';', ROWTERMINATOR = '\n', FIRSTROW = 2, ERRORFILE = 'e:\test\errorProduct.log', CODEPAGE = '1252')
|
||||
|
||||
-- ===============================================================================
|
||||
-- pulisco l tabella dai record con chiave duplicata ( se doppi li elimino tutti )
|
||||
-- ===============================================================================
|
||||
SET XACT_ABORT ON;
|
||||
BEGIN TRAN
|
||||
|
||||
-- salvo i dati con chiave duplicata
|
||||
INSERT INTO tmp.ProductionLogRaw_KO
|
||||
SELECT Prod.*, GETDATE() FROM tmp.ProductionLogRaw AS Prod
|
||||
INNER JOIN
|
||||
(
|
||||
SELECT EventStart, EventEnd, CodPlant, ProcessNum, NrPos, CodDies
|
||||
FROM tmp.ProductionLogRaw
|
||||
GROUP BY EventStart, EventEnd, CodPlant, ProcessNum, NrPos, CodDies
|
||||
HAVING COUNT(*)>1
|
||||
) AS Dupl ON Prod.EventStart = Dupl.EventStart AND
|
||||
Prod.EventEnd = Dupl.EventEnd AND
|
||||
Prod.CodPlant = Dupl.CodPlant AND
|
||||
Prod.ProcessNum = Dupl.ProcessNum AND
|
||||
Prod.NrPos = Dupl.NrPos AND
|
||||
Prod.CodDies = Dupl.CodDies
|
||||
|
||||
-- Cancello i record con chiave duplicata
|
||||
DELETE Prod
|
||||
WITH (TABLOCK)
|
||||
FROM tmp.ProductionLogRaw AS Prod
|
||||
INNER JOIN
|
||||
(
|
||||
SELECT EventStart, EventEnd, CodPlant, ProcessNum, NrPos, CodDies
|
||||
FROM tmp.ProductionLogRaw
|
||||
GROUP BY EventStart, EventEnd, CodPlant, ProcessNum, NrPos, CodDies
|
||||
HAVING COUNT(*)>1
|
||||
) AS Dupl ON Prod.EventStart = Dupl.EventStart AND
|
||||
Prod.EventEnd = Dupl.EventEnd AND
|
||||
Prod.CodPlant = Dupl.CodPlant AND
|
||||
Prod.ProcessNum = Dupl.ProcessNum AND
|
||||
Prod.NrPos = Dupl.NrPos AND
|
||||
Prod.CodDies = Dupl.CodDies
|
||||
|
||||
-- ===============================================================================
|
||||
-- pulisco la tabella dai record con date non corrette
|
||||
-- ===============================================================================
|
||||
DELETE FROM tmp.ProductionLogRaw
|
||||
WITH (TABLOCK)
|
||||
OUTPUT deleted.* INTO tmp.ProductionLogRaw_KO -- salvo i record cancellati in tabella KO
|
||||
( EventStart, EventEnd, CodPlant, ProcessNum, NrPos, CodDies, CodClient, OrderNum, BatchNum, ProcessType, EventType, RawMat
|
||||
, CodPackag, QtyIN, QtyOUT, QtyEXT, NumIN, NumOUT, QuotaPlant, QuotaMan, Tags, okPr, okQM, okSc, okDi )
|
||||
WHERE EventStart >= EventEnd
|
||||
OR CONVERT( BIGINT , EventStart ) + 68000000000000 <= EventEnd -- record che darebbero errore poi nel datediff > 68 anni
|
||||
OR EventStart IS NULL
|
||||
OR EventEnd IS NULL
|
||||
|
||||
-- SELECT * FROM tmp.ProductionLogRaw_KO
|
||||
|
||||
--ROLLBACK
|
||||
COMMIT
|
||||
|
||||
SELECT COUNT(*) AS RecordsIn FROM tmp.ProductionLogRaw
|
||||
|
||||
END
|
||||
END
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user