从 sql ce 数据库中删除所有表
Posted
技术标签:
【中文标题】从 sql ce 数据库中删除所有表【英文标题】:drop all tables from sql ce database 【发布时间】:2010-11-03 13:24:20 【问题描述】:是否可以执行的命令?
感谢帮助
【问题讨论】:
【参考方案1】:您可以使用信息SCHEMA来生成脚本:
select 'drop table ' || table_name || ';'
from information_schema.tables;
然后运行该脚本。您可能需要多次运行该脚本,因为 SQLCE 中没有 CASCADE 选项 (AFAIK)。
【讨论】:
+1 - 因为 CE 与 SQL Server 如此不同,所以我真是太糟糕了 如果有人还在寻找 2015 年 - 更新的脚本可以选择 'drop table ' + t.TABLE_SCHEMA +'.['+ t.table_name + '];'从 information_schema.tables t; @torm SQL Compact 没有架构!【参考方案2】:System.IO.File.Delete 然后运行所需的 CREATE TABLE 脚本
【讨论】:
想扩展它吗?所以...删除整个文件?我只想在每次运行测试时重建数据库。删除 .sdf 文件似乎是个坏主意。【参考方案3】:您也可以删除数据库,然后重新创建它,但它会删除您的所有配置,因此可能不是最佳选择。
【讨论】:
【参考方案4】:这就是我的做法:
-
在 Visual Studio 中使用 SQL Server Compact/SQLite Toolbox,右键单击 .sdf 文件并选择 Script Database > Script Database Schema...
另存为
CreateTables.sqlce
在 PowerShell 控制台中粘贴以下内容:
function GenerateDropScript($DbSchemaFile)
function Reverse($inputArr)
$arr = @($inputArr)
[array]::Reverse($arr)
return $arr
$TableNames = Get-Content $DbSchemaFile |
? $_.StartsWith('CREATE TABLE') |
% $_.Substring(14).Replace('] (', '')
$ReverseNames = Reverse($TableNames)
"Generating DROP script for all tables in: `n`t$DbSchemaFile`n"
$ReverseNames | % "DROP TABLE [$_]; GO;"
运行GenerateDropScript CreateTables.sqlce
这将读取 CREATE 脚本并按照创建的相反顺序为所有表生成 DROP 脚本,因此您不会遇到任何依赖错误。
【讨论】:
以上是关于从 sql ce 数据库中删除所有表的主要内容,如果未能解决你的问题,请参考以下文章