資料庫復製表結構
1. 如何對Mysql數據表進行復制,表結構復制
有很多軟體直接點擊就可以導出導入這個不說了,說一下命令方式
mysqlmp命令導出數據
格式:mysqlmp -h鏈接ip -P(大寫)埠 -u用戶名 -p密碼 資料庫名>d:XX.sql(路勁)
示例:mysqlmp -h127.0.0.1 -P3306 -uroot -p123456 htgl >d:\htgl.sql;
#導出某個資料庫的表--結構+數據+函數+存儲過程
mysqlmp -h127.0.0.1 -uroot -p123456 --opt -R htgl >d:\htgl.sql
1.導出結構不導出數據
mysqlmp -d 資料庫名 -uroot -p > xxx.sql
2.導出數據不導出結構
mysqlmp -t 資料庫名 -uroot -p > xxx.sql
3.導出數據和表結構
mysqlmp 資料庫名 -uroot -p > xxx.sql
4.導出特定表的結構
mysqlmp -uroot -p -B資料庫名 --table 表名 > xxx.sql
#mysqlmp [OPTIONS] database [tables]
2. 如何用SQL語句復製表的結構,復制整個資料庫
1.復製表結構:只能復製表的欄位,不能復制主鍵、索引等
select top 0 * into 新表名 from 原表名
2.復制整個資料庫結構及數據:
create datebase Test --創建目標資料庫
exec P_CopyDB @Source_DB='aspnet',@Des_DB='test' --把源資料庫整個復制到目標資料庫
P_CopyDB存儲過程創建過程如下
-----------------------創建存儲過程開始--------------------
create proc P_CopyDB
@Des_DB sysname, --目標資料庫
@Obj_Type nvarchar(4000)=N'',--復制的對象類型,可以是下列字元串列表:
-- O 所有對象,D 默認值,R 規則,P 存儲過程
-- T 表,TR 觸發器,DT 用戶定義數據類型
-- V 視圖,DATA 數據,DEL 刪除目標對象
@Source_DB sysname=N'', --源資料庫
@ServerName sysname=N'', --伺服器名
@UserName sysname=N'', --用戶名,不指定則表示使用 Windows 身份登錄
@pwd sysname=N'' --密碼
AS
SET NOCOUNT ON
DECLARE @srvid int,@Dbid int,@S_dbid int,@D_dbid int,@TransferID int,
@err int,@src varchar(255), @desc varchar(255)
IF ISNULL(@ServerName,N'')=N'' SET @ServerName='.'--默認為本地資料庫
IF ISNULL(@Source_DB,N'')=N'' SET @Source_DB=DB_NAME()
--創建sqldmo對象·
EXEC @err=sp_oacreate 'sqldmo.sqlserver',@srvid OUT
IF @err<>0 GOTO lb_Err
--連接伺服器
IF ISNULL(@UserName,N'')=N'' --使用 Windows 身份登錄
BEGIN
EXEC @err=sp_oasetproperty @srvid,'loginsecure',-1
IF @err<>0 GOTO lb_Err
EXEC @err=sp_oamethod @srvid,'connect',NULL,@servername
END
ELSE
EXEC @err=sp_oamethod @srvid,'connect',NULL,@servername,@UserName,@pwd
IF @err<>0 GOTO lb_Err
--獲取資料庫集
EXEC @err=sp_oagetproperty @srvid,'databases',@Dbid OUT
IF @err<>0 GOTO lb_Err
--選擇源資料庫
EXEC @err=sp_oamethod @Dbid,'item',@S_dbid OUT,@Source_DB
IF @err<>0 GOTO lb_Err
--選擇目標資料庫
EXEC @err=sp_oamethod @Dbid,'item',@D_dbid OUT,@Des_DB
IF @err<>0 GOTO lb_Err
--設置復制的對象
EXEC @err=sp_oacreate 'SQLDMO.Transfer',@TransferID OUT
IF @err<>0 GOTO lb_Err
--設置目標伺服器信息
EXEC @err=sp_oasetproperty @TransferID,'DestServer',@ServerName
IF @err<>0 GOTO lb_Err
--設置連接用戶
IF ISNULL(@UserName,N'')=N'' --使用 Windows 身份登錄
BEGIN
EXEC @err=sp_oasetproperty @TransferID,'DestUseTrustedConnection',1
IF @err<>0 GOTO lb_Err
END
ELSE
BEGIN
EXEC @err=sp_oasetproperty @TransferID,'DestLogin',@UserName
IF @err<>0 GOTO lb_Err
EXEC @err=sp_oasetproperty @TransferID,'DestPassword',@pwd
IF @err<>0 GOTO lb_Err
END
--設置復制對象信息
EXEC @err=sp_oasetproperty @TransferID,'DestDatabase',@Des_DB
IF @err<>0 GOTO lb_Err
DECLARE tb CURSOR FAST_FORWARD LOCAL
FOR
SELECT Name FROM(
SELECT KeyWord=N',D,', Name=N'CopyAllDefaults' UNION ALL
SELECT KeyWord=N',O,', Name=N'CopyAllObjects' UNION ALL
SELECT KeyWord=N',R,', Name=N'CopyAllRules' UNION ALL
SELECT KeyWord=N',P,', Name=N'CopyAllStoredProceres' UNION ALL
SELECT KeyWord=N',T,', Name=N'CopyAllTables' UNION ALL
SELECT KeyWord=N',TR,', Name=N'CopyAllTriggers' UNION ALL
SELECT KeyWord=N',DT,', Name=N'CopyAllUserDefinedDatatypes' UNION ALL
SELECT KeyWord=N',V,', Name=N'CopyAllViews' UNION ALL
SELECT KeyWord=N',DATA,',Name=N'CopyData' UNION ALL
SELECT KeyWord=N',DEL,', Name=N'DropDestObjectsFirst'
)A WHERE CHARINDEX(KeyWord,
CASE WHEN ISNULL(@Obj_Type,N'')='' THEN ',O,DATA,' ELSE @Obj_Type END)>0
OPEN tb
FETCH tb INTO @src
WHILE @@FETCH_STATUS=0
BEGIN
EXEC @err=sp_oasetproperty @TransferID,@src,1
IF @err<>0 GOTO lb_Err
FETCH tb INTO @src
END
CLOSE tb
DEALLOCATE tb
--復制對象
EXEC @err=sp_oamethod @S_dbid,'Transfer',null,@TransferID
IF @err<>0 GOTO lb_Err
--結束
SET @err=0
GOTO lb_Exit
--錯誤處理
lb_Err:
EXEC sp_oageterrorinfo NULL, @src OUT, @desc OUT
RAISERROR(N'錯誤編號 %#x, 錯誤源 "%s", 錯誤描述 "%s"',16,1,@err,@src,@desc)
RETURN -1
lb_Exit:
EXEC sp_OADestroy @Dbid
EXEC sp_OADestroy @srvid
EXEC sp_OADestroy @TransferID
RETURN @err
GO
-----------------------創建存儲過程結束--------------------
3. 如何將資料庫中的表結構和數據復制到另一個資料庫
首先,打開並連接Sql Server,在源資料庫Source_db(源資料庫名稱)上右鍵,然後依次點擊「編寫表腳本為」→「CREATE到」→「新查詢編輯器窗口」。
在第1步產生的編輯器中按」crtl+a「組合鍵全選內容,然後右鍵「復制「(或按"crtl+c"鍵)。
新建查詢,然後右鍵」粘貼「(或ctrl+v);如圖所示,將代碼中Source_db(源資料庫名)改為target_db(目標資料庫名)。接著右鍵單擊」執行「執行代碼。
然後,在目標資料庫的表結構中就可以看到被復制過來的表了。
4. SQL如何復製表結構
1、既復製表結構也復製表內容的SQL語句:
CREATE TABLE tab_new AS SELECT * FROM tab_old;
2、只復製表結構不復製表內容的SQL語句:
CREATE TABLE tab_new AS SELECT * FROM tab_old WHERE 1=2;
3、不復製表結構,只復制內容的sql語句:
SELECT vale1, value2 into Table2 from Table1
(4)資料庫復製表結構擴展閱讀:
SQL中常用的語句:
1、說明:創建資料庫
CREATE DATABASE database-name
2、說明:刪除資料庫
drop database dbname
3、說明:創建新表
create table tabname(col1 type1 [not null] [primary key],col2 type2 [not null],..)
根據已有的表創建新表:
A:create table tab_new like tab_old (使用舊表創建新表)
B:create table tab_new as select col1,col2… from tab_old definition only
4、說明:刪除新表
drop table tabname
5、說明:增加一個列
Alter table tabname add column col type
6、說明:添加主鍵
Alter table tabname add primary key(col)
7、說明:刪除主鍵
Alter table tabname drop primary key(col)
8、說明:創建索引
create [unique] index idxname on tabname(col….)
9、刪除索引
drop index idxname
5. 如何復制資料庫的結構
首先不是備份數據--還原數據,這樣是連數據都復制過去了,方法如下:
右擊A數據選擇「所有任務」》》」導出腳本「,這樣就導出了這個資料庫所有表(可以選擇,包括主鍵,什麼的)的創建語句