Good day. I have a query that grabs data from a csv and inserts it into a table. However, there are nulls in the csv and when the insert happens, the insertion appends a single quote before and after the word 'NULL'
. I used the KEEPNULLS
but am still having issues.
I would prefer not to call out every column and inject a coalesce or something where I change it from NULL
to something else then back to NULL
again. The number of columns in the table will eventually grow and I would like to not have to change anything in this script.
Any way to insert data into a table from a csv that has NULLs in it without the single quotes attaching to it? Thanks for the help.
Script to Retrieve and insert data from csv
TRUNCATE TABLE jj
BULK INSERT jj
FROM 'F:\NewHorizon\ExportSubObjGroup.csv'
WITH
(
datafiletype = 'char',
fieldterminator = ',',
keepnulls
)
Table I want to insert data into
CREATE TABLE [dbo].[jj](
[pkid] [bigint] NOT NULL,
[mo] [nvarchar](20) NULL,
[pr] [nvarchar](20) NULL,
[pri] [bigint] NULL,
[vis] [int] NULL,
[sys] [nvarchar](5) NULL,
[are] [nvarchar](5) NULL,
[equ] [nvarchar](5) NULL,
[dev] [nvarchar](5) NULL,
[fiee] [nvarchar](250) NULL,
[syst] [nvarchar](50) NULL,
[areaPr] [nvarchar](50) NULL,
[equipPr] [nvarchar](50) NULL,
[devicePr] [nvarchar](50) NULL,
[attr] [nvarchar](50) NULL,
[grou] [bigint] NULL,
[eventi] [bigint] NULL,
[numid] [bigint] NULL,
[dataType] [nvarchar](10) NULL,
[typeCol] [int] NULL,
[boolVal] [nvarchar](50) NULL,
[greaterThan] [nvarchar](50) NULL,
[greaterEqThan] [nvarchar](50) NULL,
[lessThan] [nvarchar](50) NULL,
[lessEqThan] [nvarchar](50) NULL,
[equalTo] [nvarchar](50) NULL,
[note] [nvarchar](50) NULL,
[durat] [nvarchar](10) NULL,
[groupi] [nvarchar](10) NULL,
[plcTagC] [nvarchar](10) NULL,
[eventidC] [nvarchar](10) NULL,
[fnC] [nvarchar](5) NULL,
CONSTRAINT [PK_groupings45] PRIMARY KEY CLUSTERED
(
[pkid] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
The DATA from csv
1,1,1,1,0,0,0,0,0,0,PH,NULL,NULL,SYSTEM_IO,DI_MCR,3001,1,3001,NULL,0,1,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL
2,1,1,1,0,0,0,0,0,0,PH,NULL,NULL,SYSTEM_IO,DI_MCR_CP,3002,2,3002,NULL,0,1,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL
3,1,1,1,0,0,0,0,0,0,PH,NULL,NULL,SYSTEM_IO,DI_MCR_CP,3003,3,3003,NULL,0,1,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL
The results in table jj
1 1 1 1 0 0 0 0 0 0 PH 'NULL' 'NULL' SYSTEM_IO DI_MCR 3001 1 3001 'NULL' 0 1 'NULL' 'NULL' 'NULL' 'NULL' 'NULL' 'NULL' 'NULL' 'NULL' 'NULL' 'NULL' 'NULL'
2 1 1 1 0 0 0 0 0 0 PH 'NULL' 'NULL' SYSTEM_IO DI_MCR_CP 3002 2 3002 'NULL' 0 1 'NULL' 'NULL' 'NULL' 'NULL' 'NULL' 'NULL' 'NULL' 'NULL' 'NULL' 'NULL' 'NULL'
3 1 1 1 0 0 0 0 0 0 PH 'NULL' 'NULL' SYSTEM_IO DI_MCR_CP 3003 3 3003 'NULL' 0 1 'NULL' 'NULL' 'NULL' 'NULL' 'NULL' 'NULL' 'NULL' 'NULL' 'NULL' 'NULL' 'NULL'
You can either update the file before it goes in to replace it with '' or you can update the table post import with
Update table
Set column = NULL
where column = 'NULL'
Here's an update script you can execute as part of your post import job. This took me 5 minutes to write in excel and paste it here
UPDATE table SET[mo]=NULL WHERE [mo]='NULL'
UPDATE table SET[pr]=NULL WHERE [pr]='NULL'
UPDATE table SET[pri]=NULL WHERE [pri]='NULL'
UPDATE table SET[vis]=NULL WHERE [vis]='NULL'
UPDATE table SET[sys]=NULL WHERE [sys]='NULL'
UPDATE table SET[are]=NULL WHERE [are]='NULL'
UPDATE table SET[equ]=NULL WHERE [equ]='NULL'
UPDATE table SET[dev]=NULL WHERE [dev]='NULL'
UPDATE table SET[fiee]=NULL WHERE [fiee]='NULL'
UPDATE table SET[syst]=NULL WHERE [syst]='NULL'
UPDATE table SET[areaPr]=NULL WHERE [areaPr]='NULL'
UPDATE table SET[equipPr]=NULL WHERE [equipPr]='NULL'
UPDATE table SET[devicePr]=NULL WHERE [devicePr]='NULL'
UPDATE table SET[attr]=NULL WHERE [attr]='NULL'
UPDATE table SET[grou]=NULL WHERE [grou]='NULL'
UPDATE table SET[eventi]=NULL WHERE [eventi]='NULL'
UPDATE table SET[numid]=NULL WHERE [numid]='NULL'
UPDATE table SET[dataType]=NULL WHERE [dataType]='NULL'
UPDATE table SET[typeCol]=NULL WHERE [typeCol]='NULL'
UPDATE table SET[boolVal]=NULL WHERE [boolVal]='NULL'
UPDATE table SET[greaterThan]=NULL WHERE [greaterThan]='NULL'
UPDATE table SET[greaterEqThan]=NULL WHERE [greaterEqThan]='NULL'
UPDATE table SET[lessThan]=NULL WHERE [lessThan]='NULL'
UPDATE table SET[lessEqThan]=NULL WHERE [lessEqThan]='NULL'
UPDATE table SET[equalTo]=NULL WHERE [equalTo]='NULL'
UPDATE table SET[note]=NULL WHERE [note]='NULL'
UPDATE table SET[durat]=NULL WHERE [durat]='NULL'
UPDATE table SET[groupi]=NULL WHERE [groupi]='NULL'
UPDATE table SET[plcTagC]=NULL WHERE [plcTagC]='NULL'
UPDATE table SET[eventidC]=NULL WHERE [eventidC]='NULL'
UPDATE table SET[fnC]=NULL WHERE [fnC]='NULL'
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.