当前位置:首页 » 编程语言 » sqlserver批量

sqlserver批量

发布时间: 2022-09-07 15:34:21

‘壹’ 如何高效地批量导入数据到sqlServer

SqlBulkCopy是个不错的选择,直接由DataTable可以导入到数据库,但要注意(1)列名与目标表一致(2)数据类型一致(3)空值容错处理,参考代码:///<summary///将<see cref="DataTable"/
的数据批量插入到数据库中。///</summary///<param name="dataTable"
要批量插入的
<see cref="DataTable"/。
</param///<param name="batchSize"
每批次写入的数据量。
</(DataTable dataTable,
stringtableName,
intbatchSize =10000){using(SqlConnection connection =newSqlConnection(myConnectionString)){try{connection.Open();//给表名加上前后导符using(varbulk =newSqlBulkCopy(connection, SqlBulkCopyOptions.KeepIdentity,
null){DestinationTableName=tableName,
BatchSize=batchSize}){//循环所有列,为bulk添加映射//dataTable.EachColumn(c = bulk.ColumnMappings.Add(c.ColumnName, c.ColumnName), c = !c.AutoIncrement);foreach(DataColumn dcindataTable.Columns){bulk.ColumnMappings.Add(dc.ColumnName, dc.ColumnName);}bulk.WriteToServer(dataTable);
bulk.Close();}returntrue;}catch(Exception exp){returnfalse;}finally{connection.Close();}}}

如果是数据量非常大,超过10W以上的数据,可以考虑生成.dtsx文件,然后由C#代码直接调用,效率还是不错的。

‘贰’ SQLSERVER数据库中批量导入数据的几种方法

我们通过SQL脚本来插入数据,常见如下四种方式。

方式一:一条一条插入,性能最差,不建议使用。

INSERT INTO Proct(Id,Name,Price) VALUES(newid(),'牛栏1段',160);INSERT INTO Proct(Id,Name,Price) VALUES(newid(),'牛栏2段',260);
......

方式二:insert bulk

语法如下:

方式四:拼接SQL

INSERT INTO Proct(Id,Name,Price) VALUES(newid(),'牛栏1段',160)
,(newid(),'牛栏2段',260)
......

‘叁’ sqlserver 差异备份,如何批量还原

批量还原代码如下:

Use master
GO
/*=================Usp_RestoreMuiteDataBaseFromPath========================
=====Restore Mutite DataBase File From a Path ======
=====Ken.Guo ======
=====2010.9.10 ======
=====Version: 2005 & 2008 SQL Server ======
=====EXEC Usp_RestoreMuiteDataBaseFromPath 'D:\databack','',0 ======
=========================================================================
*/
CREATE PROC Usp_RestoreMuiteDataBaseFromPath
( @DatabBaseBakPath nvarchar(400)
,@RestoreDataPath nvarchar(400)='' --RESTORE DATABASE PATH
,@IsRun smallint=0 -- 0 PRINT 1 run
)
AS
BEGIN
set nocount on
DECLARE @BackUpFileName nvarchar(200)
,@DbName nvarchar(200)
,@errorinfo nvarchar(400)

IF not exists(SELECT 1
FROM master.sys.proceres WITH(NOLOCK)
WHERE
name=N'Usp_RestoreDataBaseFormPath'

)
begin
Raiserror 50001 N'找不到存储过程SP_RestoreDataBaseFormPath '
Goto ExitFLag
end

--add path \
if (@DatabBaseBakPath is not null) and len(@DatabBaseBakPath)>1
and (right(@DatabBaseBakPath,1)<>'\')
set @DatabBaseBakPath=@DatabBaseBakPath+'\'

--Check Restore Path and Size >1000M
DECLARE @checkdrive int
SET @checkdrive=1
EXEC master.dbo.Usp_Check_DriveExists @RestoreDataPath,@checkdrive OUTPUT

IF(@checkdrive<>1)
Goto ExitFLag

DECLARE @Dir TABLE
(
BackDBFileName nvarchar(100)
,DEPTH int
,[File] int
)

INSERT INTO @Dir EXEC xp_dirtree @DatabBaseBakPath
,1
,1

DELETE FROM @Dir
WHERE charindex('.bak',BackDBFileName)=0

if not exists (select top 1 1 from @Dir)
begin
Raiserror 50001 N'在提供的路径下没有找到合符要求的备份文件'
Goto ExitFLag
end

declare db_file Cursor Local Static Read_Only Forward_Only
for
select BackDBFileName from @Dir

Open db_file
Fetch Next from db_file into @BackUpFileName
while @@FETCH_STATUS=0
begin
--Restore DataBase
set @BackUpFileName=@DatabBaseBakPath+@BackUpFileName
exec master.dbo.Usp_RestoreDataBaseFormPath @BackUpFileName,@RestoreDataPath,@IsRun
Fetch Next from db_file into @BackUpFileName
end
Close db_file
deallocate db_file

ExitFLag:
set nocount off
end

‘肆’ sqlserver批量插入多条数据怎么返回自增编号

SELECTIDENT_CURRENT('TableName')--返回当前的最后自动编号SELECTIDENT_INCR('TableName')--返回增量值SELECTIDENT_SEED('TableName')--返回种子值返回下一个自动编号:SELECTIDENT_CURRENT('TableName')+(SELECTIDENT_INCR('TableName'))--创建数据库和表(idintidentity(1,1),namevarchar(20))--执行这个SQL,就能查出来刚插入记录对应的自增列的值insertintomytablevalues('李四')select@@identitydeclare@new_idintinsertintotest_idvalues('haha')

‘伍’ SQLSERVER 批量导入EXCEL文件数据

SQL批量导入exe文件数据的话,直接从批量导入就好了。

‘陆’ 如何对sqlserver数据库表内数据批量处理(C#)

告诉你个思路,你先按常规方法把数据查询出来,放在model里面,然后取值取到d列时,用b*c,记得转换下类型,还有Model里面的d也设为Int类型的,如果说你数据库里的b,c,d都是Int
类型的,那就再好不过了。不会的再问我

‘柒’ sqlserver怎么批量删除大量数据

删除大量数据速度是正常的。
如果表里面数据都不要了,可以直接truncate
如果表里面数据只有一小部分要得,可以把小的备份出来,然后truncate表,然后再把备份的数据导回来
如果只是删除表中部分数据,可以写成循环小批量删除脚本;如果服务器性能好,百万数据删除还是很快的

‘捌’ 提高Sqlserver大批量插入数据速度的几点方法

这个可以借助系统表,一次插入多条的方式,来达到减少插入的次数,来达到大批量插入数据的方法。

‘玖’ sqlserver中如何批量修改一个表的数据

如果想把"SQL"表的前缀"ABC_"改为"DEF"

先用SQL语句查询所有"ABC_"前缀的表

select * from sysobjects where xtype='u' and name like 'ABC_%'

然后用修改语句

‘拾’ sqlserver数据库 怎么批量导出索引

sqlserver数据库 怎么批量导出索引
索引是建立在表的基础上的。所以SQL Server 2008没有提供只导出索引脚本的选项。
可以在导出向导中将选项"生成索引脚本(Script Indexes)"设置为True,然后在对象类型中只选择“表(Tables)".这样导出的脚本中就包含了索引的脚本,当然也包括表的脚本。如果不需要表的脚本,手工把它们删掉或者注释掉即可。

热点内容
linux多行删除 发布:2025-01-13 13:06:01 浏览:200
传奇3脱机脚本 发布:2025-01-13 13:05:08 浏览:751
java请求https 发布:2025-01-13 12:53:35 浏览:868
SQL限定符 发布:2025-01-13 12:46:19 浏览:145
挂号系统php源码 发布:2025-01-13 12:39:04 浏览:581
存储器通史是什么 发布:2025-01-13 12:38:11 浏览:405
可以捏的解压器怎么做 发布:2025-01-13 12:32:16 浏览:524
ios的java编译器 发布:2025-01-13 12:12:54 浏览:616
安卓手机如何看wifi使用人数 发布:2025-01-13 12:08:10 浏览:953
vb反编译教程 发布:2025-01-13 12:08:00 浏览:538