美好的一天。我有一个查询从csv抓取数据并将其插入表中。但是,csv中有空值,当插入发生时,插入会在单词'NULL'
之前和之后附加单引号。我使用了KEEPNULLS
,但仍然遇到问题。
我宁愿不打电话给每一栏并注入一个合并或其他我将其从NULL
更改为其他内容然后再返回NULL
的内容。表中的列数最终会增长,我不想在此脚本中更改任何内容。
是否有任何方法可以从csv中将数据插入到表中,其中没有附加单引号的csv?谢谢您的帮助。
从csv
中检索和插入数据的脚本TRUNCATE TABLE jj
BULK INSERT jj
FROM 'F:\NewHorizon\ExportSubObjGroup.csv'
WITH
(
datafiletype = 'char',
fieldterminator = ',',
keepnulls
)
表I我想将数据插入
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
来自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
表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'
答案 0 :(得分:2)
您可以在文件进入之前更新文件以用''替换它,或者您可以使用
更新导入后的表格 Update table
Set column = NULL
where column = 'NULL'
这是一个可以作为帖子导入作业的一部分执行的更新脚本。这花了我5分钟写在excel并粘贴在这里
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'