當前位置:首頁 » 編程語言 » sqlserver大批量刪除數據
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

sqlserver大批量刪除數據

發布時間: 2022-09-23 08:05:28

A. sqlserver怎麼批量刪除大量數據

用一次性刪除的方法是很不明智的。

1、delete操作會被完整記錄到日誌里,它需要大量空間和時間;

2、如果刪除中間發生中斷,一切刪除會回滾(在一個事務里);

3、同時刪除多行,記錄上的鎖也許會被提升為排它表鎖,從而阻礙操作完成之前有對這個表的操作(有時候會妨礙正常的業務)所以一般採取分批刪除的方法.

所以我們可以通過分批次遷移壓縮數據,這樣可以大大提升執行速度和執行效率

首先通過set rowcount 來控制每次刪除的記錄數
執行Sql語句
SET ROWCOUNT 0; 記錄每次執行刪除的條數
通過TOP的方法,並且使用循環
WHILE 1 = 1
BEGIN
DELETE TOP(5000) FROM dbo.Table WHERE time< '2016-12-12';
IF @@rowcount < 5000
BREAK;
END

B. 怎麼用sql語句刪除sqlserver資料庫中的多行數據

使用delete語句
刪除全部:delete from 表名

刪除 ID小於100的行: delete from 表名 where ID<100

C. sqlserver怎麼批量刪除大量數據

TRUNCATE TABLE 表名
就可以直接把表清了,而且速度特別快

D. 教您如何簡單刪除SQLServer資料庫的所有數據

也許很多讀者朋友都經歷過這樣的事情:要在開發資料庫基礎上清理一個空庫,但由於對資料庫結構缺乏整體了解,在刪除一個表的記錄時,刪除不了,因為可能有外鍵約束,一個常見的資料庫結構是一個主表,一個子表,這種情況下一般都得先刪除子表記錄,再刪除主表記錄。
1.按照先後順序逐個刪除,這個方法在表非常多的情況下顯得很不現實,即便是表數量不多,但約束比較多時,你還是要花費大量的時間和精力去研究其間的約束關系,然後找出先刪哪個表,再刪哪個表,最後又刪哪個表。
首先得編寫代碼循環檢查所有的表,這里我推薦一個存儲過程sp_MSForEachTable,因為在微軟的官方文檔中沒有對這個存儲過程有描述,很多開發人員也許都還未曾聽說,所以你在互聯網上搜索得到的解決辦法大多很復雜,也許有的人會認為,既然沒有官方文檔,這個存儲過程可能會不穩定,打心理上會排斥它,但事實並非如此。下面來先看一個完整的腳本
這個腳本創建了一個命名為sp_DeleteAllData的存儲過程,前面兩行語句分別禁用約束和觸發器,第三條語句才是真正地刪除所有數據,接下里的語句分別還原約束和觸發器,最後一條語句是顯示每個表中的記錄,當然這條語句也可以不要,我只是想確認一下是否清空了所有表而已。

E. 如何刪除大量數據 sql server2005 數據量在8千萬左右

你要整表刪除嗎,那麼你用truncate table 可以瞬間刪除所有記錄,但是這個不記錄log,無法回滾。也不能加條件。
如果要加條件,就只好用delete了,或者就是用DTS把你所要的表導出到文本,然後清空表,再把文本導回表中。

你用sp_spaceused 'talbe_name'可以迅速查到你要的記錄數,及表所佔的空間。

truncate table table_name
delete table_name where .........
sp_spaceused 'table_name'

如果這樣你可以用bcp先導出你要的5千萬數據
先count(*)你的記錄然後-8kw=@num
1、在cmd下,導出你要保留的記錄到文本data_1中
E:\>bcp "select top @num * from db.dbo.table order by id desc" queryout data_1.txt -c -t "|" -r \n -U sa -P password
2、truncate table table_name ---trun掉你的表
3、將 data_1.txt 的數據導入到table中
E:\temp>bcp db.dbo.Table in data_1.txt -b 5000 -c -t ",|" -r \n -U sa -P password
4、ok搞定
速度絕對比delete快不知道多少倍。
而且日誌也比較小。

然後你要高出1千五百萬也可以用bcp來做。
效率很高。

F. sqlserver怎麼批量刪除大量數據

用一次性刪除的方法是很不明智的。

1、delete操作會被完整記錄到日誌里,它需要大量空間和時間;

2、如果刪除中間發生中斷,一切刪除會回滾(在一個事務里);

3、同時刪除多行,記錄上的鎖也許會被提升為排它表鎖,從而阻礙操作完成之前有對這個表的操作(有時候會妨礙正常的業務)所以一般採取分批刪除的方法.

所以我們可以通過分批次遷移壓縮數據,這樣可以大大提升執行速度和執行效率

首先通過set rowcount 來控制每次刪除的記錄數
執行Sql語句
SET ROWCOUNT 0; 記錄每次執行刪除的條數
通過TOP的方法,並且使用循環
WHILE 1 = 1
BEGIN
DELETE TOP(5000) FROM dbo.Table WHERE time< '2016-12-12';
IF @@rowcount < 5000
BREAK;
END

G. sqlserver怎麼批量刪除大量數據

刪除大量數據速度是正常的。
如果表裡面數據都不要了,可以直接truncate
如果表裡面數據只有一小部分要得,可以把小的備份出來,然後truncate表,然後再把備份的數據導回來
如果只是刪除表中部分數據,可以寫成循環小批量刪除腳本;如果伺服器性能好,百萬數據刪除還是很快的

H. sqlserver怎麼批量刪除大量數據

a.delete操作會被完整記錄到日誌里,它需要大量空間和時間;
b.如果刪除中間發生中斷,一切刪除會回滾(在一個事務里);
c.同時刪除多行,記錄上的鎖也許會被提升為排它表鎖,從而阻礙操作完成之前有對這個表的操作(有時候會妨礙正常的業務)
所以一般採取分批刪除的方法.

I. sql server 如何快速刪除大表的數據

在sql
server
2008management
studio,用相關賬號登錄,找到你所要清空數據的表所在的資料庫,然後選中資料庫右鍵選擇新建查詢,進入查詢界面窗口,選擇輸入以下sql語句就可以了。
如果沒有其他表的外鍵關聯這個表的主鍵,可以用下面的語句(效率比較高)
truncate
table
tablename
如果有的話,就用
delete
from
tablename