資料庫分割再成批插入

2021-09-08 06:48:18 字數 3507 閱讀 2890

分割再成批插入

declare @s varchar(

8000

),@sql nvarchar(

4000

)set@s=

'1,12,1212,4545

'set

@sql='

insert into t(col) select '+

replace(@s,',

','col union all select ')

exec(@sql)

測試drop table #table

declare @s varchar(

8000

),@sql nvarchar(

4000

)set@s=

'1,12,1212,4545,454

'create table #table (col 

int)

set@sql='

insert into #table(col) select '+

replace(@s,',

','col union all select ')

exec(@sql)

select 

*from #table

create function f_split(@sourcesql varchar(

8000

),@strseprate varchar(

10))

returns @temp table(a varchar(

100))

--實現split功能 的函式

asbegin

declare @i 

intset

@sourcesql

=rtrim(ltrim(@sourcesql))

set@i

=charindex(@strseprate,@sourcesql)

while

@i>=

1begin

insert @temp values(left(@sourcesql,@i-1

))set

@sourcesql

=substring(@sourcesql,@i+1

,len(@sourcesql)

-@i)

set@i

=charindex(@strseprate,@sourcesql)

endif

@sourcesql

<>'\

'insert @temp values(@sourcesql)

return

end用法:select 

*from dbo.f_split(

'abc:bc:c:d:e',

':')

、get_strarraylength

create function get_strarraylength

(@str varchar(

1024

),  

--要分割的字串

@split varchar(

10)  

--分隔符號

)returns 

intas

begin

declare @location 

intdeclare @start 

intdeclare @length 

intset

@str

=ltrim(rtrim(@str))

set@location

=charindex(@split,@str)

set@length=1

while

@location

<>

0begin

set@start

=@location+1

set@location

=charindex(@split,@str,@start)

set@length

=@length+1

endreturn

@length

end2

、get_strarraystrofindex

create function get_strarraystrofindex

(@str varchar(

1024

),  

--要分割的字串

@split varchar(

10),  

--分隔符號

@index 

int--

取第幾個元素

)returns varchar(

1024)as

begin

declare @location 

intdeclare @start 

intdeclare @next 

intdeclare @seed 

intset

@str

=ltrim(rtrim(@str))

set@start=1

set@next=1

set@seed

=len(@split)

set@location

=charindex(@split,@str)

while

@location

<>

0and @index

>

@next

begin

set@start

=@location

+@seed

set@location

=charindex(@split,@str,@start)

set@next

=@next+1

endif

@location =0

select @location 

=len(@str)+1

--這兒存在兩種情況:

1、字串不存在分隔符號 

2、字串中存在分隔符號,跳出while迴圈後,@location為0,那預設為字串後邊有乙個分隔符號。

return

substring(@str,@start,@location

-@start)

end3

、應用:

set@next=1

while

@next

<=

dbo.get_strarraylength(@keywords,',

')begin

ifdbo.get_strarraystrofindex(@keywords,',

',@next)

<>

''set

@strwhere   

=@strwhere +'

or keywords like ''%

'+dbo.get_strarraystrofindex(@keywords,',

',@next)+'

%'''

set@next

=@next+1

end

如何分割sdf資料庫

f d zinc 400 ligands ligand46 concat 46 split number 35000 number of molecules in each file number of sdfs split number i 0j 0 f2 open f str j sdf w f...

scrapy 資料庫插入

1 安裝mysql sudo apt get install mysql 2 安裝python mysql sudo apt get install python mysqldb 3 安裝python支援mysql的驅動sudo pip install pymysql notice 安裝時密碼不要為...

插入資料庫操作

步驟如下 1 連線資料庫 conn pymysql.connect host user passwd db charset 2 建立操作游標,建立mysql的操作連線 cursor conn.cursor 3 寫sql語句 插入操作,方法有以下幾個 方法一 用format 注意項是若引數是字串形式,...