當前位置:首頁 » 編程語言 » sql移動表到新文件組
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

sql移動表到新文件組

發布時間: 2022-04-07 15:12:05

1. sql語句實現一個表數據直接復制到新表

原表存在的話這樣用:
insert into a select * from b

原表不存在的話這樣用:
select * into a from b

這是SqlServer的用法,Oracle還有卻別的,下面是Oracle的用法

原表存在的話這樣用:
insert into a select * from b

原表不存在的話這樣用:
create table a as select * from b

以上,希望對你有所幫助!

2. sql server如何重建索引到其它文件組

在日常工作中,我們發現很多實施案例中,sql server的資料庫數據與索引在一起。我見過一個客戶的,他的資料庫總共大小才60g,但索引與數據完全混在一起,從管理資料庫的直覺來看,性能方面肯定有問題,所以我建議他們,不管怎麼樣,把索引與資料庫分開,對性能是有好處的!但是sql server的索引,想要通過重建的方式,把數據與索引分開,並不是一件容易的事懷,在使用rebuild時,並不能增加文件組選項。後來研究發現,可以通過以下方式把數據與非聚簇索引分開,具體如下:
set nocount on

declare @index table
(
object_id int,
objectName sysname,
index_id int,
indexName sysname,
fill_factor tinyint,
allow_row_locks bit,
allow_page_locks bit,
is_padded bit,
indexText varchar(max),
indexTextEnd varchar(max)
)

declare @indexColumn table
(
object_id int,
index_id int,
column_id int,
index_column_id int,
max_index_column_id int,
is_descending_key bit,
is_included_column bit,
columnName varchar(255),
indexText varchar(max) null
)

insert into @index
select
i.object_id,
object_name(i.object_id),
i.index_id,
i.name,
fill_factor,
allow_row_locks,
allow_page_locks,
is_padded,
'CREATE NONCLUSTERED INDEX [' + i.name + '] ON [dbo].[' + object_name(i.object_id) + '] ' + char(13),
'WITH (PAD_INDEX = ' +
CASE WHEN is_padded = 1 THEN ' ON ' ELSE ' OFF ' END +
', STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = ON, ONLINE = OFF, ALLOW_ROW_LOCKS = ' +
CASE WHEN allow_row_locks = 1 THEN ' ON ' ELSE ' OFF ' END +
', ALLOW_PAGE_LOCKS = ' +
CASE WHEN allow_page_locks = 1 THEN ' ON ' ELSE ' OFF ' END +
CASE WHEN fill_factor > 0 THEN ', FILLFACTOR = ' + convert(varchar(3), fill_factor) ELSE '' END +
') ON [IndexFG];print('''+i.name+' @ '+object_name(i.object_id)+''')' --+ CHAR(13) + ' GO;'+ CHAR(13) --注意標紅的地方,這是新的文件組的名稱
from sys.indexes i
where i.type = 2 and not exists(select 1 from sys.key_constraints kc where kc.name=i.name)
and objectproperty(i.object_id , 'IsUserTable') = 1
order by object_name(i.object_id), i.name

insert into @indexColumn
select
i.object_id,
i.index_id,
ic.column_id,
ic.index_column_id,
max(ic.index_column_id) over (partition by i.object_id, i.index_id, is_included_column),
is_descending_key,
is_included_column,
'[' + c.name + ']',
null
from @index i
join sys.index_columns ic
on i.object_id = ic.object_id
and i.index_id = ic.index_id
join sys.columns c
on ic.object_id = c.object_id
and ic.column_id = c.column_id
order by i.object_id, i.index_id, ic.index_column_id

declare @fields varchar(max)
declare @object_id int, @index_id int

select @fields = null, @object_id = -1, @index_id = -1

update @indexColumn
set @fields = indexText =
case when object_id = isnull(@object_id, object_id) and index_id = isnull(@index_id, index_id)
then isnull(@fields + ', ', ' ') + columnName + case when is_descending_key = 0 then ' ASC' else ' DESC' end
else columnName + case when is_descending_key = 0 then ' ASC' else ' DESC' end
end,
@object_id = case when object_id <> @object_id
then object_id else @object_id end,
@index_id = case when index_id <> @index_id
then index_id else @index_id end
from @indexColumn
where is_included_column = 0

select @fields = null, @object_id = -1, @index_id = -1

update @indexColumn
set @fields = indexText =
case when object_id = isnull(@object_id, object_id) and index_id = isnull(@index_id, index_id)
then isnull(@fields + ', ', ' ') + columnName
else columnName
end,
@object_id = case when object_id <> @object_id
then object_id else @object_id end,
@index_id = case when index_id <> @index_id
then index_id else @index_id end
from @indexColumn
where is_included_column = 1

update @index
set indexText = i.indexText + '( ' + char(13) + char(9) + ic.indexText + char(13) + ') '
from @index i join @indexColumn ic
on i.object_id = ic.object_id
and i.index_id = ic.index_id
and ic.index_column_id = ic.max_index_column_id
and ic.is_included_column = 0

update @index
set indexText = i.indexText + 'INCLUDE ( ' + char(13) + char(9) + ic.indexText + char(13) + ') '
from @index i join @indexColumn ic
on i.object_id = ic.object_id
and i.index_id = ic.index_id
and ic.index_column_id = ic.max_index_column_id
and ic.is_included_column = 1

update @index
set indexText = indexText + indexTextEnd
from @index

select indexText, objectName, indexName
from @index

最後的查詢結果第一行就是執行的命令!

3. 如何將資料庫中已有的文件加入文件組

SQL文件組就是文件的邏輯集合。它的目的是為了方便數據的管理和分配.文件組可以把指定是文件組合在一起。 在首次創建資料庫,或者以後將更多文件添加到資料庫時,可以創建文件組。但是,一旦將文件添加到資料庫,就不可能再將這些文件移到其它文件組。 一個文件不能是多個文件組的成員。表格、索引以及text、ntext和image數據可以與特定的文件組相關聯。這意味著它們的所有頁都將從該文件組的文件中分配。 有三種類型的文件組: 主文件組 這些文件組包含主數據文件以及任何其它沒有放入其它文件組的文件。系統表的所有頁都從主文件組分配。 用戶定義文件組 該文件組是用CREATEDATABASE或ALTERDATABASE語句中的FILEGROUP關鍵字,或在SQLServer企業管理器內的"屬性"對話框上指定的任何文件組。 默認文件組 默認文件組包含在創建時沒有指定文件組的所有表和索引的頁。在每個資料庫中,每次只能有一個文件組是默認文件組。如果沒有指定默認文件組,則默認文件組是主文件組。 最多可以為每個資料庫創建256個文件組。文件組只能包含數據文件。事務日誌文件不能是文件組的一部分。 (⊙_⊙)?

4. sql 怎麼把一個表的數據插入到另外一個表

--第一種情況的
1》如果2張表的欄位一致,並且希望插入全部數據,可以用這種方法:
INSERT INTO 目標表 SELECT * FROM 來源表(查詢條件);

2》比如要將 articles 表插入到 newArticles 表中,則是:
INSERT INTO newArticles SELECT * FROM articles;

3》如果只希望導入指定欄位,可以用這種方法:
INSERT INTO 目標表 (欄位1, 欄位2, ...) SELECT 欄位1, 欄位2, ... FROM 來源表;
--下面是第二種情況
4》如果將一個表的數據放在另外一個不存在的表:
select * into 目標不存在的表 from 來源表(查詢條件)

5》如果只希望導入指定欄位,可以用這種方法:
select 欄位1,欄位2,... into 目標不存在的表 from 來源表

5. 怎樣把sql資料庫表結構導入到新資料庫

需要看需求,如果另一張表結構是存在的是一種,另一種是另一張表不存在。
表結構存在:

1

insert into 被插入表(欄位1,欄位2,欄位3) select 欄位1,欄位2,欄位3 from 原表;

注意:被插入表的欄位1,欄位2,欄位3需要與原表的插入欄位一一對應。

表結構不存在:

1

select 欄位1,欄位2,欄位3 into 新表 from 原表;

6. sql server怎樣把一個資料庫中的表移動到另一個資料庫中

分兩步進行:
第一步,復製表結構:
在表上面右擊——>編寫表腳本為:——>Create到——>新查詢編輯器窗口,你也可以保存為sql文件,將新查詢編輯器窗口最上面的一句話USE [olddatabase]中的「olddatabase」修改為「newdatabase」,其中olddatabase為源資料庫名,newdatabase為目標資料庫名,點擊上面的「執行」按鈕,這樣,表結構復制完畢;
第二步,復製表數據:
在「olddatabase」上右擊——>任務——>導出數據,在彈出對話框中選好源資料庫、身份驗證和目標資料庫、身份驗證後,然後選擇要復制的表,完成後則表數據即插入成功。

7. SQL更改表所在的文件組有什麼用

文件組的作用是存儲路徑,你說說的表的文件組那就是分區表要用到的,分區表設多個文件組的目的就是提高I/O的讀寫速度,對於一個資料庫建多個文件組的目的也是為了分散存儲。

8. 在SQL Server中,如何將現有表設置到新的文件組(Filegroup)

public
class
CatchException{
public
static
void
main(String
[]
args){
int[]
a
=
{1,2,3};
try{
System.out.println(a[3]);
}
catch(Exception
e){
System.out.println("樹組越界了~");
}
}
}
手機打字代碼很蛋疼……希望能幫到你~