我正在嘗試創建一個集成服務項目,該項目將使用一組現有(遺留)數據庫來創建新數據庫。由於我是SSIS noob,所以我的進度是相當漸進的,並且在整個目標數據庫中添加截斷將幫助我更輕鬆地進行測試。截斷表?
這樣的事情可能嗎?
我正在嘗試創建一個集成服務項目,該項目將使用一組現有(遺留)數據庫來創建新數據庫。由於我是SSIS noob,所以我的進度是相當漸進的,並且在整個目標數據庫中添加截斷將幫助我更輕鬆地進行測試。截斷表?
這樣的事情可能嗎?
此SQL語句會爲你做它。如果您希望它成爲IS項目的一部分,那麼將其作爲SQL腳本任務的SQL。
declare @object_id int
declare @str varchar(255)
select @object_id = min(object_id)
from sys.tables
where name <> 'sysdtslog90'
while @object_id is not null
begin
select @str = 'truncate table ' + name
from sys.tables
where object_id = @object_id
print @str
exec (@str)
select @object_id = min(object_id)
from sys.tables
where object_id > @object_id
and name <> 'sysdtslog90'
end
如果你對使用sys.tables視圖不滿意,那麼你總是可以自己定義表列表。
爲什麼要使用這樣複雜的SQL語句?爲什麼不直接使用表達式變量的值爲(DELETE FROM tablename WHERE ControlKey =?)的執行SQL任務
因爲那時我需要一個接一個地瀏覽我的所有桌子。我需要的腳本是一些通用腳本,用於處理整個數據庫中的任何表 –
這裏是一個Doctrine 1.2代碼,用於清空所有表,忽略innoDB外鍵。我正在使用它來引導單元測試
/**
* Empty all tables, ignoring innoDB foreign keys
*/
function emptyTables()
{
$conn = Doctrine_Manager::getInstance()->getCurrentConnection();
$stmt = $conn->prepare('SHOW TABLES');
$stmt->execute();
$queries = "SET FOREIGN_KEY_CHECKS = 0;";
foreach($stmt->fetchAll() as $table) {
$queries .= "TRUNCATE `".array_shift($table)."`;\n";
}
$queries .= "SET FOREIGN_KEY_CHECKS = 1;";
$conn->getDbh()->query($queries);
}
您是否試圖截斷(擦除數據)或刪除表並重新創建? –
擦除數據。我只是在忙於此事,所以我希望每個人都試着從一張乾淨的紙上開始。 –