❶ 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();
}