建立資料庫:
--create databasecreate database bulktestdb;
gouse bulktestdb;
go--create table
create table bulktesttable(
id int primary key,
username nvarchar(32),
pwd varchar(16))
go--create table valued
create type bulkudt as table
(id int,
username nvarchar(32),
pwd varchar(16))
第一種,普通sql用insert插入:
stopwatch sw = new stopwatch();sqlconnection sqlconn = new sqlconnection(
configurationmanager.connectionstrings["connstr"].connectionstring);//連線資料庫
sqlcommand sqlcomm = new sqlcommand();
sqlcomm.commandtext = string.format("insert into bulktesttable(id,username,pwd)values(@p0,@p1,@p2)");//引數化sql
sqlcomm.parameters.add("@p0", sqldbtype.int);
sqlcomm.parameters.add("@p1", sqldbtype.nvarchar);
sqlcomm.parameters.add("@p2", sqldbtype.varchar);
sqlcomm.commandtype = commandtype.text;
sqlcomm.connection = sqlconn;
sqlconn.open();
try", count * multiply);
sqlcomm.parameters["@p2"].value = string.format("pwd-", count * multiply);
sw.start();
sqlcomm.executenonquery();
sw.stop();
}//每插入10萬條資料後,顯示此次插入所用時間
console.writeline(string.format("elapsed time is milliseconds", sw.elapsedmilliseconds));}}
catch (exception ex)
finally
console.readline();
第二種,用bulk;
bulk方法主要思想是通過在客戶端把資料都快取在table中,然後利用sqlbulkcopy一次性把table中的資料插入到資料庫
public static void bulktodb(datatable dt)catch (exception ex)
finally
}public static datatable gettableschema()
); return dt;
}static void main(string args)
", count * multiply);
r[2] = string.format("pwd-", count * multiply);
dt.rows.add(r);
}sw.start();
bulk.bulktodb(dt);
sw.stop();
console.writeline(string.format("elapsed time is milliseconds", sw.elapsedmilliseconds));
}console.readline();
}
第三,錶值引數法;
錶值引數是sql server 2008新特性,簡稱tvps。對於錶值引數不熟悉的朋友,可以參考最新的book online;其速度比bulk還快5s。
public static void tablevaluedtodb(datatable dt)}catch (exception ex)
finally
}public static datatable gettableschema()
); return dt;
}static void main(string args)
", count * multiply);
r[2] = string.format("pwd-", count * multiply);
dt.rows.add(r);
}sw.start();
tablevalued.tablevaluedtodb(dt);
sw.stop();
console.writeline(string.format("elapsed time is milliseconds", sw.elapsedmilliseconds));
}console.readline();
}
Oracle查詢前100萬條資料
oracle不支援select top語句,在oracle中經常是用order by跟rownum select 列名1 列名n from select 列名1 列名n from 表名 order by 列名1 where rownum n 抽出記錄數 order by rownum asc 如 按...
SQL 快速向表中插入100萬條資料
setnocounton 02use master 03go 04 判斷資料庫testdb是否存在,即建立資料庫 05if db id testdb isnull 06createdatabasetestdb 07go 08use testdb 09go 10 判斷nums 表是否存在,存在即將其刪...
PHP爬蟲 100萬條資料其實不難
php爬取100萬條資料,首先要思考這三個問題 怎麼爬取?怎麼提公升爬取速度?怎麼存放爬取的資料?第乙個想到是不是分布式爬蟲呢,主機多的話是可以這麼張狂任性的,單機的話就要內斂些了。不能分布式,那可以多執行緒啊,換個方向也是很有逼格的。php多執行緒,我首選 swoole 了,不僅可以 多執行緒,還...