I'm trying to automate the conversion of a 5.2 Million line flat file (No, I'm not kidding) to SQL Server on a monthly basis. (I've actually just solved my problem - but I'll post bot hthe question and the answer as it may help someone else)
I've simplified the problem below...
FlatFile
Dealer Category Value
One Cars 50,000
One Trucks 20,000
Two Cars 15,000
Two Motorcycles 35,000
NewTable
Dealer Cars Trucks Motorcycles
One 50,000 20,000
Two 15,000 35,000
CREATE PROCEDURE dbo.Flat_to_Columns @dealer CHAR(10) AS
DECLARE @c CHAR(30)
DECLARE column1 CURSOR FOR
SELECT [Category]
FROM dbo.FlatFile GROUP BY [Category]
OPEN column1
FETCH NEXT FROM column1 INTO @c
WHILE @@fetch_status = 0
BEGIN
UPDATE NewTable SET @c = (SELECT SUM(Value) FROM FlatFile WHERE Category = @c AND Dealer = @Dealer), Dealer = @Dealer
FETCH NEXT FROM column1 INTO @c
END
CLOSE column1
DEALLOCATE column1
GO
I've simplified the problem below...
FlatFile
Dealer Category Value
One Cars 50,000
One Trucks 20,000
Two Cars 15,000
Two Motorcycles 35,000
NewTable
Dealer Cars Trucks Motorcycles
One 50,000 20,000
Two 15,000 35,000
CREATE PROCEDURE dbo.Flat_to_Columns @dealer CHAR(10) AS
DECLARE @c CHAR(30)
DECLARE column1 CURSOR FOR
SELECT [Category]
FROM dbo.FlatFile GROUP BY [Category]
OPEN column1
FETCH NEXT FROM column1 INTO @c
WHILE @@fetch_status = 0
BEGIN
UPDATE NewTable SET @c = (SELECT SUM(Value) FROM FlatFile WHERE Category = @c AND Dealer = @Dealer), Dealer = @Dealer
FETCH NEXT FROM column1 INTO @c
END
CLOSE column1
DEALLOCATE column1
GO