1. 像数据库一次性插入10w条数据,怎么插入效率快啊!
在sql Server 中插入一条数据使用Insert语句,但是如果想要批量插入一堆数据的话,循环使用Insert不仅效率低,而且会导致SQL一系统性能问题
下面介绍SQL Server支持的两种批量数据插入方法:Bulk和表值参数(Table-Valued Parameters)。
bulk方法主要思想是通过在客户端把数据都缓存在Table中,然后利用SqlBulkCopy一次性把Table中的数据插入到数据库
代码如下:
public static void BulkToDB(DataTable dt)
{
SqlConnection sqlConn = new SqlConnection(
ConfigurationManager.ConnectionStrings["ConnStr"].ConnectionString);
SqlBulkCopy bulkCopy = new SqlBulkCopy(sqlConn);
bulkCopy.DestinationTableName = "BulkTestTable";
bulkCopy.BatchSize = dt.Rows.Count;
try
{
sqlConn.Open();
if (dt != null && dt.Rows.Count != 0)
bulkCopy.WriteToServer(dt);
}
catch (Exception ex)
{
throw ex;
}
finally
{
sqlConn.Close();
if (bulkCopy != null)
bulkCopy.Close();
}
}
public static DataTable GetTableSchema()
{
DataTable dt = new DataTable();
dt.Columns.AddRange(new DataColumn[]{
new DataColumn("Id",typeof(int)),
new DataColumn("UserName",typeof(string)),
new DataColumn("Pwd",typeof(string))});
return dt;
}
static void Main(string[] args)
{
Stopwatch sw = new Stopwatch();
for (int multiply = 0; multiply < 10; multiply++)
{
DataTable dt = Bulk.GetTableSchema();
for (int count = multiply * 100000; count < (multiply + 1) * 100000; count++)
{
DataRow r = dt.NewRow();
r[0] = count;
r[1] = string.Format("User-{0}", count * multiply);
r[2] = string.Format("Pwd-{0}", count * multiply);
dt.Rows.Add(r);
}
sw.Start();
Bulk.BulkToDB(dt);
sw.Stop();
Console.WriteLine(string.Format("Elapsed Time is {0} Milliseconds", sw.ElapsedMilliseconds));
}
Console.ReadLine();
}
2. 想建一个简单的数据库,便于数据的查询,怎么做
可以建一个数据库,里面建几个表,存放数据。之后做一个查询界面,连接数据库,根据需求开发查询条件。 逻辑是这样,主要是要看需求
3. sql 如何向数据库中写入的速度快
不要一行一行insert,这样很慢,用事务批量写入就会快很多
原理:一行行insert数据时,每次insert都相当于一次事务提交,而显式用一个事务批量提交时,只提交一次即可,速度自然就会快很多
4. .net 向数据库插入10000条记录用什么方法最快
只要不是逐项提交,效率都可以。但你的数据量很大,如果导入的数据不在乎排序,那么就不必要在意了,否则如果你将来业务代码里可能要通过主键排序,那这时要加事务,虽然oracle并发控制不会主键冲突,但连续的主键就不能保证了。如果只是找个时间导入数据的话,直接把所有其他用户都断掉,然后1000条更新一次就好。如果有blob,clob这种字段,还是100-200一次比较好
5. 有一个很大的数据库,容量7个G。。怎样才能够快速查询呢,我每次查询都需要十几分钟
第一,硬件配置要好。如果你机器不行,很烂,那么再怎么优化,也快不起来。
第二,数据库结构要优化,要在你常用的查询列上设置索引。比如你用select * from table where name='jack' 这时候,你在name列上加索引,这样,查询的时候速度会非常快。
6. 如何往SQL数据库中快速插入大量数据
有declare语句是可以的
比如创建了一个表a:
create table a
( aid int identity(1,1) not null Primary(Key),
adata int)
插入数据:
declare @n int
set @n = 0
while @n < 2000
begin
set @n = @n+1
insert into a(adata) values(@n)
end
自己改改就可以了
7. 在程序中产生的十亿多条数据要存入数据库中,有什么高效快速的方法
这么大的量,可能需要大型数据库了,WINDOWS平台上可能差些
LINUX,UNIX上有。DB2 和 Informix