数据库复制表结构
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数据选择“所有任务”》》”导出脚本“,这样就导出了这个数据库所有表(可以选择,包括主键,什么的)的创建语句