SQLServer数据批量导入的几种方式
说到SQLServer 的数据批量导入,下面用常用的几种方式做下对比,后面详细介绍每种方式如何使用(本文的代码使用语言c#)
导入方式
是否需写代码
导入过程能否对数据加工
插入数据的速度
多表数据导入
是否必需写SQL语句
1.通过SQLServer客户端管理工具
F
F
快
F
F
2.循环调用插入语句、或存储过程
T
T
慢
T
T
3.使用SqlBulkCopy
T
F
快
F
F
4.使用SQLServer表值参数
T
T
快
T
T
1.通过SQLServer客户端管理工具
打开SQLServer客户端连接要操作的数据库引擎
右键要操作的数据库,选择任务--导入数据,第一次使用会弹出向导页如下图:
点下一步,一般要导入的数据都是excel,数据源我们选择Microsofy Excel(不同版本会有些差异),
浏览选择要导入的excel文件;
下一步选择目标数据源选择我们的SQLServer
根据需要一直点下一步,需要注意在选择表和数据源页面,根据实际需要选择对应的表,以及编辑列的映射,
最后点击完成,导入数据。
2.循环调用插入语句、或存储过程
此方法就是调用写好的sql语句或存储过程来循环的插入数据导数据库;根据需要可以在读取文件数据后,对数据进行校验和加工。
下面代码是一个循环插入的实现,如果需要输出导入进度可以用BackgroundWorker+ progressBar在页面上显示导入进度;
private int DataImport()
{
if (File.Exists(path))
File.Delete(path);
int i = 0;
// 打开数据库连接
string strConn = System.Configuration.ConfigurationManager.AppSettings["SsConnString"];
SqlConnection Coon = new SqlConnection(strConn);
if (Coon.State.Equals(ConnectionState.Closed))
{
Coon.Open();
}
foreach (DataRow dr in m_dt.Rows)
{
i++;
if (bkWorker.CancellationPending)
{
e.Cancel = true;