如何从excel中复制/粘贴以下定界数据(默认情况下,使用制表符定界):
declare @t_values nvarchar(max) = N' NULL 490366 NULL NULL NULL 490400 NULL NULL NULL 490402 NULL NULL 483061 490404 10 abc1 NULL 490406 NULL NULL 9766167 490408 3 abc2' ;
到我的临时表:
CREATE TABLE #insertTable ( transaction_id int ,user_id int ,purchase_price decimal(8,2) ,mess varchar(8) );
?
注意!不使用OPENROWSET
OPENROWSET
解决方案INSERT INTO:
INSERT INTO
解决方案SELECT INTO:
SELECT INTO
询问
SNIPPET(在此处获取creae片段的快速方法)
PS 如果您使用的是旧版SQL Server(数据库兼容性设置低于130),则需要单独STRING_SPLIT使用。我建议以下解决方案。
STRING_SPLIT
请尝试以下操作:
-- NB! Script do NOT write any ifo to any table -- to perform insert please copy/paste script output and execute declare @tbl_name nvarchar(128) = '#insertTable'; -- Destination Table Name + [(column names)] declare @dlm nvarchar(128) = char(9); -- Delimiter: HT = char(9) = HorizontalTab declare @tbl nvarchar(max) = -- Paste Table Values here (from excel for instance) N'NULL 490366 NULL NULL NULL 490400 NULL NULL NULL 490402 NULL NULL 483061 490404 10 abc1 NULL 490406 NULL NULL 9766167 490408 3 abc2' ; select N'insert into ' + @tbl_name -- table name + ' VALUES(' + replace -- replace 'NULL' by NULL ( '''' + replace -- surround values by quotes 'value1','value2'... ( value , @dlm -- Delimiter: HT = char(9) = HorizontalTab , ''',''' ) + '''' , '''NULL''' , 'NULL' ) + ');' as insertquery --into #t from fn_split_string -- insert Line per Row into table ( replace -- replace CR + LF by LF (CR - Carriage Return, LF - Line Feed) ( @tbl -- Paste Table Values here (from excel for instance) , char(13)+char(10) -- CR + LF , char(10) -- LF ) ,char(10) ) where len(value)>0 -- skip empty rows