在SQL Server中,我有一个数据库< code>abc。在这个数据库中,我有数百个表。这些表格中的每一个都被称为< code>xyz.table
我想把所有的表格都改成< code>abc.table。
我们有办法将数据库< code>abc中的所有名称从< code>xyz.table更改为< code>abc.table吗?
我可以通过将每个表的模式更改为abc来手动更改名称
我假设您已经在数据库中创建了模式abc
。
如果没有,您可以参考这里
http://www.youtube.com/watch?v=_DDgv8uek6M
http://www.quackit.com/sql_server/sql_server_2008/tutorial/sql_server_database_schemas.cfm
若要更改数据库中所有表的架构,可以使用以下系统创建的msforeachtable存储过程,用alter schema重命名每个表的架构。
exec sp_MSforeachtable "ALTER SCHEMA abc TRANSFER ? PRINT '? modified' "
您可以将Alter Schema与未记录的存储过程执行sp_MSforeachtable一起使用,它基本上遍历所有表。
exec sp_MSforeachtable "ALTER SCHEMA new_schema TRANSFER ? PRINT '? modified' "
使用新的Schema更改new_schema关键字。
详情请浏览链接
sp_MS可访问
更改所有表的架构
正如其他人指出的那样,SP已弃用,因此还有另一种方法可以通过从sys.tables获取表的名称来实现此目的
Declare @value int
Set @value=1
declare @sql varchar(max), @table varchar(50), @old varchar(50), @new varchar(50)
set @old = 'dbo'
set @new = 'abc'
while exists(select * from sys.tables where schema_name(schema_id) = @old)
begin
;With CTE as
(
Select *,row_number() over(order by object_id) rowNumber from sys.tables
where schema_name(schema_id) = @old
)
select @table= name from CTE where @value=rowNumber
Set @value=@value+1
set @sql = 'alter schema ' + @new + ' transfer ' + @old + '.' + @table
exec(@sql)
end
您可以让光标在xyz
模式中的所有表上运行,并将所有这些表移动到abc
模式中:
DECLARE TableCursor CURSOR FAST_FORWARD
FOR
-- get the table names for all tables in the 'xyz' schema
SELECT t.Name
FROM sys.tables t
WHERE schema_id = SCHEMA_ID('xyz')
DECLARE @TableName sysname
OPEN TableCursor
FETCH NEXT FROM TableCursor INTO @TableName
-- iterate over all tables found
WHILE @@FETCH_STATUS = 0
BEGIN
DECLARE @Stmt NVARCHAR(999)
-- construct T-SQL statement to move table to 'abc' schema
SET @Stmt = 'ALTER SCHEMA abc TRANSFER xyz.' + @TableName
EXEC (@Stmt)
FETCH NEXT FROM TableCursor INTO @TableName
END
CLOSE TableCursor
DEALLOCATE TableCursor
我有一个表,它有列[col1、col2、col3....col9]。我想在Python中把所有列数据合并到一个列中作为col?
问题内容: 如何重命名以下文件: 分为以下几个: 相关代码为: 问题答案: 一行可以分为:
我有一个单一的CSV文件,在其中我想重命名一些列相同的名称。我的初始代码如下所示 我用这段代码从dataframe中提取了选定的列 此切片每隔三列获取一次。现在我想用相同的名称重命名每三列一次,但这样重命名我的列会出错 有没有办法在pandas中重命名多个同名列? 除了手动操作,还有其他建议吗?
问题内容: 我想重命名与名称相匹配的basedir下的所有目录。例如: 在中,我有: 我想重命名所有匹配的目录,但是我想保留前缀部分。 使用,我可以轻松地列出所有目录,如下所示: 但是,如何使用(或与其他应用程序结合)以保留前缀? 提前谢谢了! 问题答案: 在执行命令之前将目录更改为父目录,因此此处对于每个父目录都是本地的。
问题内容: 我正在尝试使用Python重命名目录中的某些文件。 假设我有一个名为的文件,并且想要删除,所以我得到的文件名将是 我正在尝试使用,但无法正常工作。我也考虑过使用字符串操作,但也没有成功。 问题答案: 使用重命名或移动文件或目录。
我的问题是:我正在处理一个大型工作簿中的命名区域。我需要复制数据,比如从某个工作表x中的某个命名区域复制数据,并将其粘贴到另一个命名区域,比如WKSheetY,然后才能对其进行排序,并将其显示在wksheet Z中的另一个区域上。 我通过vba实现了所有这些,只是在执行代码时屏幕闪烁很多。 Im使用语句application.goto reference:=“”来选择范围,这会激活这些工作表,因此