March 17, 2009 at 9:24 am
Hi! Sorry if this is a really basic question, but any help is definitely appreciated!
I'm loading a bunch of csv files into a table, and want to create a package using dts wizard & SSBIDS to run this a few times a week as files come in.
The files I'm importing are missing a RowID, which I would like to create during the upload process and be able to use as a primary key. ...but as I don't have a source row for it, I'm not really sure how to map nothing to something in the destination table.
Any ideas?
Thanks!
March 17, 2009 at 9:31 am
Does the RowID needs to be arbitrary? If not, then you can add an IDENTITY column to your destination table and leave the complexity for SQL Server to handle.
--Ramesh
March 17, 2009 at 9:35 am
If you don't use an IDENTITY column you can import the date into a temp table and use the following statement to add an incremental id:
IF (OBJECT_ID('tempdb..#test') IS NOT NULL)
DROP TABLE #test
CREATE TABLE #test (id INT, txt VARCHAR(100))
-- Some test data
INSERT INTO #test
SELECT TOP(100) NULL, name
FROM master.sys.columns
-- Create an incremental id
DECLARE @id INT
SET @id = 100
UPDATE #test SET @id = id = @id + 1
-- Result
SELECT * FROM #test
Now you can INSERT the data into the destination table.
Greets
Flo
March 17, 2009 at 10:02 am
Florian Reischl (3/17/2009)
If you don't use an IDENTITY column you can import the date into a temp table and use the following statement to add an incremental id:
This should work, but it does not give the sequence ids according to the order of the input rows.
--Ramesh
March 17, 2009 at 10:11 am
Maybe I'm misunderstanding your suggestion - but I just tried to follow it, and was unsuccessful.
I named my RowID column [IDENTITY] (SQL added the brackets automatically, which I guessed meant I was on the right track...)
I set it to my primary key, so it is not allowed to contain NULL values.
Then when I reran the bulk load, I got the same error message, but with RowID replaced with IDENTITY:
An OLE DB record is available. Source: "Microsoft SQL Native Client" Hresult: 0x80004005 Description: "Cannot insert the value NULL into column 'IDENTITY', table 'PWS_BKM.dbo.tblTradeHistory'; column does not allow nulls. INSERT fails.".
Am I not doing this right?
Thanks!
March 17, 2009 at 10:14 am
Don't NAME it "identity" - MAKE it an identity column. If you're using the UI - look in the properties of the column (identity specification section).
----------------------------------------------------------------------------------
Your lack of planning does not constitute an emergency on my part...unless you're my manager...or a director and above...or a really loud-spoken end-user..All right - what was my emergency again?
March 17, 2009 at 10:18 am
You have to explicitly specify that you want the value of IDENTITY column to be generated by SQL Server. This can be set by un-checking the "Keep Identity" property of OLE DB Destination component in Data Flow Task.
--Ramesh
March 17, 2009 at 11:32 am
Great - I had to uncheck the box labeled "Enable Identity Insert" in the Edit Mappings part of the OLEDB Destination part of the wizard.
Thanks!
Viewing 8 posts - 1 through 8 (of 8 total)
You must be logged in to reply to this topic. Login to reply
This website stores cookies on your computer.
These cookies are used to improve your website experience and provide more personalized services to you, both on this website and through other media.
To find out more about the cookies we use, see our Privacy Policy