SqlBulkCopy 快速插入数据到SqlServer 数据库
向SQL Server中导入大量数量可以用bulk insert,但是必须要求 插入 的文件在 数据 库机器上或者一个 数据 库可以访问的共享文件夹中(我不知道怎么设置共享文件夹,以使得SQL Server能访问到) SqlBulkCopy 是.net中的一个类,提供了导入大量 数据 的功能。
向SQL Server中导入大量数量可以用bulk insert,但是必须要求插入的文件在数据库机器上或者一个数据库可以访问的共享文件夹中(我不知道怎么设置共享文件夹,以使得SQL Server能访问到)
SqlBulkCopy 是.net中的一个类,提供了导入大量数据的功能。
基本用法如下:
<span>using </span><span>(</span><span>SqlBulkCopy </span><span>bc = </span><span>new </span><span>SqlBulkCopy</span><span>(sqlConn, </span><span>SqlBulkCopyOptions</span><span>.TableLock | </span><span>SqlBulkCopyOptions</span><span>.UseInternalTransaction, </span><span>null</span><span>)) { bc.BulkCopyTimeout = 10 * 60; bc.BatchSize = 10000; bc.DestinationTableName = </span><span>"dbo.Destination"</span><span>; bc.WriteToServer(reader); </span><span>//reader 是一个继承自IDataReader的类的实例 </span><span>}</span>
自己可以写代码来实现继承自IDataReader的类。有n多成员要实现。。。
比如FieldCount, Read(), GetValue(int i), Close()等
下面是一个读文件的例子:
<span>//返回记录的列数 </span><span>public int </span><span>FieldCount { </span><span>get </span><span>{ </span><span>return </span><span>3; } } </span><span>//读记录,此方法会被自动调用 </span><span>public bool </span><span>Read() { </span><span>if </span><span>(_Reader == </span><span>null</span><span>) _Reader = </span><span>new </span><span>StreamReader</span><span>(_FilePath); </span><span>string </span><span>line = _Reader.ReadLine(); </span><span>if </span><span>(line != </span><span>null</span><span>) { _CurrentQueryItem = GetRawData(line); _Count++; </span><span>while </span><span>(_CurrentQueryItem == </span><span>null</span><span>)</span><span>//如果读出的是不满足条件的记录,则读下一条记录 </span><span>{ Read(); } </span><span>return true</span><span>; } </span><span>return false</span><span>; } </span><span>//返回一条记录中第i 列(项)的值,此方法会被自动调用 //SqlBulkCopy内部应该有一个循环,从0到FieldCount -1 ,再调用GetValue(int i)这个方法。我猜的。。。 </span><span>public object </span><span>GetValue(</span><span>int </span><span>i) { </span><span>if </span><span>(_CurrentQueryItem == </span><span>null</span><span>) </span><span>return null</span><span>; </span><span>switch </span><span>(i) { </span><span>//如果<strong>数据</strong>库中表的第一列是自增字段,则会忽略第一列,也就是说此方法被调用时,i只会从1开始,所以不需要case 0的情况。估计.net内部去取目的表的schema,自动判断哪些列是需要从外部导入的。有空再研究这个问题 </span><span>case </span><span>0: </span><span>return </span><span>_CurrentQueryItem.Item1; </span><span>case </span><span>1: </span><span>return </span><span>_CurrentQueryItem.Item2; </span><span>case </span><span>2: </span><span>return </span><span>_CurrentQueryItem.Item3; </span><span>default</span><span>: </span><span>throw new </span><span>IndexOutOfRangeException</span><span>(); } } </span><span>//释放资源 </span><span>public void </span><span>Close() { Dispose(); } </span><span>public void </span><span>Dispose() { </span><span>if </span><span>(_Reader != </span><span>null</span><span>) _Reader.Close(); }</span>
有一些其他属性其方法需要自己实现,当然有的不实现也没关系。似乎重要的就以上几个方法了。
对照SqlDataRead,自己可以猜想出会用到哪些方法。
经过实验,一个文件如果一行一行插入到数据库里,需要大约2分钟,如果用SqlBulkCopy 10秒左右就完成了。而且可以自己实现类来指定处理什么数据,也不用把文件放在数据库机器上了。不错。
忘说了,SqlBulkCopy里用到的connction对象只能是SqlConnection。SqlBulkCopy.WriteToServer (DataRow]) 和SqlBulkCopy.WriteToServer (DataTable) 都是可以的。

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

热门话题

导入步骤如下:将 MDF 文件复制到 SQL Server 的数据目录(通常为 C:\Program Files\Microsoft SQL Server\MSSQL\DATA)。在 SQL Server Management Studio(SSMS)中,打开数据库并选择“附加”。单击“添加”按钮,选择 MDF 文件。确认数据库名称,点击确定按钮即可。

对于 SQL Server 数据库中已存在同名对象,需要采取以下步骤:确认对象类型(表、视图、存储过程)。如果对象为空,可使用 IF NOT EXISTS 跳过创建。如果对象有数据,使用不同名称或修改结构。使用 DROP 删除现有对象(谨慎操作,建议备份)。检查架构更改,确保没有引用删除或重命名的对象。

当 SQL Server 服务无法启动时,可采取以下步骤解决:检查错误日志以确定根本原因。确保服务帐户具有启动服务的权限。检查依赖项服务是否正在运行。禁用防病毒软件。修复 SQL Server 安装。如果修复不起作用,重新安装 SQL Server。

要查看 SQL Server 端口号:打开 SSMS,连接到服务器。在对象资源管理器中找到服务器名称,右键单击它,然后选择“属性”。在“连接”选项卡中,查看“TCP 端口”字段。

SQL Server 数据库文件通常存储在以下默认位置:Windows: C:\Program Files\Microsoft SQL Server\MSSQL\DATALinux: /var/opt/mssql/data可通过修改数据库文件路径设置来自定义数据库文件位置。

若误删 SQL Server 数据库,可采取以下步骤恢复:停止数据库活动;备份日志文件;检查数据库日志;恢复选项:从备份恢复;从事务日志恢复;使用 DBCC CHECKDB;使用第三方工具。请定期备份数据库并启用事务日志以防止数据丢失。

在iPhone上面临滞后,缓慢的移动数据连接?通常,手机上蜂窝互联网的强度取决于几个因素,例如区域、蜂窝网络类型、漫游类型等。您可以采取一些措施来获得更快、更可靠的蜂窝互联网连接。修复1–强制重启iPhone有时,强制重启设备只会重置许多内容,包括蜂窝网络连接。步骤1–只需按一次音量调高键并松开即可。接下来,按降低音量键并再次释放它。步骤2–该过程的下一部分是按住右侧的按钮。让iPhone完成重启。启用蜂窝数据并检查网络速度。再次检查修复2–更改数据模式虽然5G提供了更好的网络速度,但在信号较弱

如果 SQL Server 安装失败,可通过以下步骤清理:卸载 SQL Server删除注册表项删除文件和文件夹重启计算机
