在利用数据库开发时,常常会将一些表之间的数据互相导入.当然可以编写程序实现,但是,程序常常需要开发环境,不方便.最方便是利用sql语言直接导入.既方便而修改也简单.以下就是导入的方法.
Sql :
复制代码代码如下:
sql:
[code]
a. 建一个新表[DN_UserTemp](在老表dn_user上增加一列)
[Id] [idtype] NOT NULL ,
[Name] [fntype] NOT NULL ,
[Descript] [dstype] NULL ,
[LogonNm] [idtype] NOT NULL ,
[Password] [idtype] NULL ,
[Gender] [char] (1) NULL ,
[Quited] [booltype] NOT NULL,
[OffDuty] [booltype] NOT NULL ,
[Stopped] [booltype] NOT NULL,
[OSBind] [booltype] NOT NULL,
[Domain] [idtype] NULL ,
[EMail] [fntype] NULL ,
[UnitId] [idtype] NULL ,
[BranchId] [idtype] NULL ,
[DutyId] [idtype] NULL ,
[LevelId] [idtype] NULL ,
[ClassId] [idtype] NULL ,
[TypeId] [idtype] NULL ,
[ExpireDT] [datetime] NULL ,
[Sort] [int] NOT NULL ,
[AllowDel] [booltype] NOT NULL,
[UnitChief] [booltype] NOT NULL,
[BranchChief] [booltype] NOT NULL ,
[UnitDeputy] [booltype] NOT NULL ,
[BranchDeputy] [booltype] NOT NULL ,
) ON [PRIMARY]
c.将dn_usertemp 拷入dn_user
declare @i int
declare @j int
declare @Name fntype
set @i=1
select @j=count(*) from dn_usertemp
begin
print @Name
end
MySql数据库复制表数据
CREATE TABLE mytbl_new LIKE production.mytbl;
INSERT mytbl_new SELECT * FROM production.mytbl;
第一个命令是创建新的数据表 mytbl_new ,并复制 mytbl 的数据表结构.
第二个命令是讲数据表 mytbl 中的数据复制到新表 mytbl_new .
注:production.mytbl是指定要复制表的数据库名称为 production .它是可选的.
假如没有production. ,MySQL数据库将会假设mytbl在当前操作的数据库.
另外:在mysql数据库中复制数据为:
select * into desTable from sourceTable在mssql中支持,在mysql中不支持
insert into desTable select * from sourceTable
如果从库上表 t 数据与主库不一致,导致复制错误,整个库的数据量很大,重做从库很慢,如何单独恢复这张表的数据?通常认为是不能修复单表数据的,因为涉及到各表状态不一致的问题.下面就列举备份单表恢复到从库会面临的问题以及解决办法:
场景 1
如果复制报错后,没有使用跳过错误、复制过滤等方法修复主从复制.主库数据一直在更新,从库数据停滞在报错状态(假设 GTID 为 aaaa:1-100).
修复步骤:
在主库上备份表 t (假设备份快照 GTID 为 aaaa:1-10000);
恢复到从库;
启动复制.
这里的问题是复制起始位点是 aaaa:101,从库上表 t 的数据状态是领先其他表的.aaaa:101-10000 这些事务中只要有修改表 t 数据的事务,就会导致复制报错 ,比如主键冲突、记录不存在(而 aaaa:101 这个之前复制报错的事务必定是修改表 t 的事务)
解决办法:启动复制时跳过 aaaa:101-10000 这些事务中修改表 t 的事务.
正确的修复步骤:
① 在主库上备份表 t (假设备份快照 GTID 为 aaaa:1-10000),恢复到从库;
CHANGE REPLICATION FILTER REPLICATE_WILD_IGNORE_TABLE = ('db_name.t');
START SLAVE UNTIL SQL_AFTER_GTIDS = 'aaaa:10000';
如果复制报错后,使用跳过错误、复制过滤等办法修复了主从复制.主、从库数据一直在更新.
在主库上备份表 t (假设备份快照 GTID为 aaaa:1-10000);
恢复表 t 到从库;
正确修复步骤:
对表 t 加读锁;
在主库上备份表 t;
停止从库复制,恢复表 t;
启动复制;
解锁表 t.
如果是大表,这里可以用可传输表空间方式备份、恢复表,减少锁表时间.
注:不用考虑操作系统.?
---------------------------------------------------------------?
在dos命令提示符下使用mysqldump命令进行备份.?
如下:?
C:\Documents and Settings\Administratormysqldump yinshi c:\\backup.txt -uroot?
-u,-p参数后面跟的分别是用户名和密码.?
将你备份出来的文件我这里是backup.txt拷贝到另一台机上,再在dos命令提示符下用mysql命令,进行恢复,如下:?
or?
mysqlsource backup.txt;(这里backup.txt在放在data目录下)?
如果另一台机器上也安装了mysql,可以直接导入?
developer源服务器连接用户名?
有两种办法.?
①.、在B机器上装mysql.?
将A机器上的mysql/data下的你的数据库目录整个拷贝下来.?
将B机器上的mysql服务停止.?
找到B机器上的mysql/data目录,将你拷贝的目录粘贴进去,然后启动mysql服务就可以了.?
你可以使用SELECT INTO OUTFILE语句备份数据,并用LOAD DATA INFILE语句恢复数据.这种方法只能导出数据的内容,不包括表的结构,如果表的结构文件损坏,你必须要先恢复原来的表的结构.?
语法:?
SELECT * INTO {OUTFILE | DUMPFILE} 'file_name' FROM tbl_name?
LOAD DATA [LOW_PRIORITY] [LOCAL] INFILE 'file_name.txt' [REPLACE | IGNORE]?
INTO TABLE tbl_name?
SELECT ... INTO OUTFILE 'file_name'
你建表复制就可以了,例如CREATE TABLE aa AS SELECT * FROM tree;这是完全复制tree表的数据及表结构到aa表中.假如要复制某些字段的话,如:insert into 表名user(表中字段sal) select sal from emp;插入某一列sal到user表中,从emp表中获取sal的数据信息.最后提醒下,Oracle和MySql复制表建表 一样,可以自己建表结构,再复制数据;也可以复制部分列和部分数据,分开操作. 但要保证数据类型一致,插入指定列数,列数要相同,列的长度空间大就可以了.
以上就是土嘎嘎小编为大家整理的mysql怎么复制列数据相关主题介绍,如果您觉得小编更新的文章只要能对粉丝们有用,就是我们最大的鼓励和动力,不要忘记讲本站分享给您身边的朋友哦!!