快上网专注成都网站设计 成都网站制作 成都网站建设
成都网站建设公司服务热线:028-86922220

网站建设知识

十年网站开发经验 + 多家企业客户 + 靠谱的建站团队

量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决

mysql怎么复制列数据,mysql数据库怎么复制表

mysql如何复制数据到同一张表?

在利用数据库开发时,常常会将一些表之间的数据互相导入。当然可以编写程序实现,但是,程序常常需要开发环境,不方便。最方便是利用sql语言直接导入。既方便而修改也简单。以下就是导入的方法。

创新互联于2013年开始,是专业互联网技术服务公司,拥有项目做网站、成都网站制作网站策划,项目实施与项目整合能力。我们以让每一个梦想脱颖而出为使命,1280元乌鲁木齐做网站,已为上家服务,为乌鲁木齐各地企业和个人服务,联系电话:18980820575

1、 表结构相同的表,且在同一数据库(如,table1,table2)

Sql :

复制代码代码如下:

insert into table1 select * from table2 (完全复制)

insert into table1 select distinct * from table2(不复制重复纪录)

insert into table1 select top 5 * from table2 (前五条纪录)

2、不在同一数据库中(如,db1 table1,db2 table2)

sql:

[code]

insert into db1.table1 select * from db2.table2 (完全复制)

insert into db1.table1 select distinct * from db2table2(不复制重复纪录)

insert into tdb1.able1 select top 5 * from db2table2 (前五条纪录)

3、表结构不同的表或复制部分纪录(如,dn_user,dn_user2)

a. 建一个新表[DN_UserTemp](在老表dn_user上增加一列)

复制代码代码如下:

CREATE TABLE [DN_UserTemp] ( [Num] [numeric](18, 0) IDENTITY (1, 1) NOT NULL)

[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 ,

[IP] [varchar] (15) COLLATE Chinese_PRC_CI_AS 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 ,

[Num] [numeric](18, 0) IDENTITY (1, 1) NOT NULL

) ON [PRIMARY]

b. 将dn_uer2的数据拷入dn_usertemp

sql:insert into dn_usertemp select * from dn_user2

c.将dn_usertemp 拷入dn_user

sql:

复制代码代码如下:

declare @i int

declare @j int

declare @Name fntype

set @i=1

select @j=count(*) from dn_usertemp

while @i@j 1

begin

select @Name=Name from dn_usertemp where Num=@i

print @Name

insert into dn_user (Name) values (@Name) where Num=@i

select @i=@i 1

end

MySql数据库复制表数据

将 production 数据库中的 mytbl 表快速复制为 mytbl_new,2个命令如下:

复制代码代码如下:

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

如何将mysql的一个完整数据库全部复制到另外一个数据库?

如果从库上表 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 的事务。

正确的修复步骤:

1. 在主库上备份表 t (假设备份快照 GTID 为 aaaa:1-10000),恢复到从库;

2. 设置复制过滤,过滤表 t:

CHANGE REPLICATION FILTER REPLICATE_WILD_IGNORE_TABLE = ('db_name.t');

3. 启动复制,回放到 aaaa:10000 时停止复制(此时从库上所有表的数据都在同一状态,是一致的);

START SLAVE UNTIL SQL_AFTER_GTIDS = 'aaaa:10000';

4. 删除复制过滤,正常启动复制。

注意事项:这里要用 mysqldump --single-transaction --master-data=2,记录备份快照对应的 GTID

场景 2

如果复制报错后,使用跳过错误、复制过滤等办法修复了主从复制。主、从库数据一直在更新。

修复步骤:

在主库上备份表 t (假设备份快照 GTID为 aaaa:1-10000);

停止从库复制,GTID为 aaaa:1-20000;

恢复表 t 到从库;

启动复制。

这里的问题是复制起始位点是 aaaa:20001,aaaa:10000-20000 这些事务将不会在从库上回放,如果这里面有修改表 t 数据的事务,从库上将丢失这部分数据。

解决办法:从备份开始到启动复制,锁定表 t,保证 aaaa:10000-20000 中没有修改表 t 的事务。

正确修复步骤:

对表 t 加读锁;

在主库上备份表 t;

停止从库复制,恢复表 t;

启动复制;

解锁表 t。

如果是大表,这里可以用可传输表空间方式备份、恢复表,减少锁表时间。

如何复制mysql数据库中的记录

在Mysql程序中有我自己的一个数据库共5张表,里边数据不算太多。我现在想把他们全部弄到另一台电脑中去,该怎么弄,如果不用其它的软件工具,只用Mysql自已的程序不知可否? 

注:不用考虑操作系统。 

--------------------------------------------------------------- 

在dos命令提示符下使用mysqldump命令进行备份. 

如下: 

C:\Documents and Settings\Administratormysqldump yinshi c:\\backup.txt -uroot 

-p12142022 

说明:yinshi是我的数据库名,里面有5张表; c:\\backup.txt 是我备份出来文件名和路径; 

-u,-p参数后面跟的分别是用户名和密码. 

将你备份出来的文件我这里是backup.txt拷贝到另一台机上,再在dos命令提示符下用mysql命令,进行恢复,如下: 

C:\Documents and Settings\Administratormysql c:\\backup.txt -uroot -p12142022 

or 

mysqlsource backup.txt;(这里backup.txt在放在data目录下) 

--------------------------------------------------------------- 

如果另一台机器上也安装了mysql,可以直接导入 

C:\mysql\binmysqldump -h172.20.6.250 -udeveloper -p123456 --opt server_databasename | mysql -hlocalhost -uroot -C obj_databasename 

172.20.6.250源服务器ip 

developer源服务器连接用户名 

--------------------------------------------------------------- 

有两种办法。 

1、在B机器上装mysql。 

将A机器上的mysql/data下的你的数据库目录整个拷贝下来。 

将B机器上的mysql服务停止。 

找到B机器上的mysql/data目录,将你拷贝的目录粘贴进去,然后启动mysql服务就可以了。 

2、使用SQL语句备份和恢复 

你可以使用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’

mysql数据库如何将相同数据库中的一个表的数据复制到另一个表中?

你建表复制就可以了,例如CREATE TABLE aa AS SELECT * FROM tree;这是完全复制tree表的数据及表结构到aa表中。假如要复制某些字段的话,如:insert into 表名user(表中字段sal) select sal from emp;插入某一列sal到user表中,从emp表中获取sal的数据信息。最后提醒下,Oracle和MySql复制表建表 一样,可以自己建表结构,再复制数据;也可以复制部分列和部分数据,分开操作。 但要保证数据类型一致,插入指定列数,列数要相同,列的长度空间大就可以了。


网站名称:mysql怎么复制列数据,mysql数据库怎么复制表
本文URL:http://6mz.cn/article/hcpijc.html

其他资讯