❶ T-sql语句怎么让一个ID+1循环插入10W条数据呢
WITHcteAS
(SELECT1ASid
UNIONALL
SELECTid+1FROMcteWHEREid<100000)
SELECT*FROMcteOPTION(MAXRECURSION0)
❷ 怎样用一条sql语句向数据库中插入10000条记录
只能用循环了,以下是php语法
for($i=0;$i<10001;$i++){
INSERT INTO TABLE();//这里式sql语句
}
❸ 像数据库一次性插入10w条数据,怎么插入效率快啊!
1、导入数据,数据结构一样可直接导入,稍微不同或需要处理,可以用一个中间程序2、数据库脚本数据导入3、如果是执行代码导入,神马都是浮云,只能做到优化开一次数据库连接connection对象而Statement对象,创建一个,插入一个,顺便释放Statement对象的资源最后关闭connection对象用事务一次性提交,汗一个10W条。
❹ Oracle中如何对A表插入10W条数据进行测试的SQL语句,A表中有ID,NAME,AGE属性,谢谢各位大神
你这手也太新了吧
下载一个toad,用这个工具之间将excel中的数据导入到数据库即可
❺ 用t _sql 语句去批处理插入十万条数据到数据库表里,用哪些方法能够更快呢
可以用子查询。
如果要插入的数据来自查询结果可以用
insert 表名(字段列表) select查询
如果要插入的是原始数据,可以用union
insert 表名(字段1名,字段2名,……,字段n名)
select 字段1值1,字段2值1,……,字段n值1
union 字段1值2,字段2值2,……,字段n值2
……
union 字段1值m,字段2值m,……,字段n值m
❻ 有一个系统,每天要向sql server服务器插入10几万条记录,在不考虑查询的情况下怎么提高效率
建分区表的话, 要看你有几个磁盘.
如果只有一个磁盘的, 分区来分区去, 最后数据还是在 一个磁盘上面,
如果你有多个磁盘的.
那么可以根据那个 自增 ID , 设置一个 计算列
比如你有5个 磁盘, 那么 那个计算列 是 自增 ID % 5
那么 当 计算列的数值 = 1 , 数据被存储到 磁盘1上面
那么 当 计算列的数值 = 2 , 数据被存储到 磁盘2上面
那么 当 计算列的数值 = 3 , 数据被存储到 磁盘3上面
那么 当 计算列的数值 = 4 , 数据被存储到 磁盘4上面
那么 当 计算列的数值 = 0 , 数据被存储到 磁盘5上面
这种情况,是针对 你插入数据量很大, 瓶颈发生在 磁盘 IO 处理的情况下。
可以提升一定的 插入的性能。
但是看你的那个描述
当记录数据到达1000w之后插入记录就变得很慢
那么我怀疑,可能是 索引处理 花费的时间比较多了
因为你插入一行数据
要更新 表的数据, 同时还有 更新索引的数据
表的数据,更新起来很简单。 索引的更新,需要做一定的计算。
即时你的表,没有任何的索引,但是那个 自增主键, 也是自动要创建索引的。
❼ sql server 执行循环插入100万条数据,当插入10万条左右时内存溢出了
CREATE TABLE #ta(A1 int,ID bigint NOT NULL IDENTITY(1,1));go
DECLARE @max AS INT, @rc AS INT;
SET @max = 1000000;
SET @rc = 1;
INSERT INTO #ta(A1) select 1
WHILE @rc < ceiling(log(@max) / log(2))
BEGIN
INSERT INTO #ta(A1) SELECT 1 FROM #ta;
SET @rc = @rc + 1 ;
END
select @max = @max - @@IDENTITY
INSERT INTO #ta(A1)
SELECT 1 FROM #ta where id <= @max
insert into book3
select 'a'+ltrim(str(id)),'b'+ltrim(str(id)),'c'+ltrim(str(id)),'d'+ltrim(str(id)),'e'+ltrim(str(id)),'2-12-2012'
from #ta
❽ 求SQL 语句 一句话,建表并插入十万条数据
insert into b select * from 另一张表
这样操作之下,建立了一个新的表b,新表b的内容完全来自与“另一张表”
可是这个前提是“另一张表”要有一万条记录。
不知道你能不能理解,不能理解在查询分析器上运行一下就知道了/
其实并不是很难的
❾ 用t _sql 语句去批处理插入十万条数据到数据库表里,用哪些方法能够更快呢
可以用子查询。
如果要插入的数据来自查询结果可以用
insert
表名(字段列表)
select查询
如果要插入的是原始数据,可以用union
insert
表名(字段1名,字段2名,……,字段n名)
select
字段1值1,字段2值1,……,字段n值1
union
字段1值2,字段2值2,……,字段n值2
……
union
字段1值m,字段2值m,……,字段n值m
❿ 像数据库一次性插入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();
}