postgresql数据库中怎么复制表结构和完全复制表,如oracle中create table a as select * from b

postgresql数据库中怎么复制表结构和完全复制表,如oracle中create table a as select * from b,第1张

Oracle 的例子

SQL> SELECT

  2    

  3  FROM

  4    test_main;

        ID VALUE

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

         1 ONE

         2 TWO

SQL> CREATE TABLE test_t AS SELECT  FROM test_main;

表已创建。

SQL> select  FROM test_t;

        ID VALUE

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

         1 ONE

         2 TWO

postgresql 的例子

Test=# CREATE TABLE test_t AS (SELECT  FROM test_main) ;

SELECT 2

Test=# select  from test_t;

 id | value

----+-------

  1 | ONE

  2 | TWO

(2 行记录)

我不知道是不是 Postgresql 那里要加个括号啊, 哈哈。

是不是oracle数据库?如果是的你可以用copy命令。

用法:copy

from

数据库1的用户名/数据库1的密码@数据库1的名称

insert

into

a(a1,a2,a3,a4)

using

select

b1,b2,b3,b4

from

b;

代码在数据库2执行。

如你有数据库db1,db2(假设用户名和密码为scott,tiger),要从db2把数据复制到db1

copy

from

scott/tiger@db2

insert

into

a(a1,a2,a3,a4)

using

select

b1,b2,b3,b4

from

b;

不能一步到位。这样复制后,主键,索引只能是后期处理。

ALTER TABLE 表名 ADD Constraint PK_表名 Primary key(列名)

CREATE INDEX [tid_index] ON [dbo][tb_test]([tid])

分为两种情况,一种是目标表不存在,另一种是目标表已存在,语法是不同的。

分别以sqlserver和oracle为例,两者略有不同。

sqlserver中,如果目标表不存在:

select into 新表名 from 旧表名;sqlserver中,如果目标表已存在:

insert into 新表名 select from 旧表名;oracle中,如果目标表不存在:

create table 新表名 as select from 旧表名;oracle中,如果目标表已存在(方法同sqlserver):

insert into 新表名 select from 旧表名;

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

扩展资料:

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

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

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 db1table1 select from db2table2 (完全复制)

insert into db1table1 select distinct from db2table2(不复制重复纪录)

insert into tdb1able1 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 productionmytbl;

INSERT mytbl_new SELECT FROM productionmytbl;

第一个命令是创建新的数据表 mytbl_new ,并复制 mytbl 的数据表结构。

第二个命令是讲数据表 mytbl 中的数据复制到新表 mytbl_new 。

注:productionmytbl是指定要复制表的数据库名称为 production 。它是可选的。

假如没有production ,MySQL数据库将会假设mytbl在当前 *** 作的数据库。

另外:在mysql数据库中复制数据为:

复制代码代码如下:

select into desTable from sourceTable在mssql中支持,在mysql中不支持

insert into desTable select from sourceTable

以上就是关于postgresql数据库中怎么复制表结构和完全复制表,如oracle中create table a as select * from b全部的内容,包括:postgresql数据库中怎么复制表结构和完全复制表,如oracle中create table a as select * from b、数据库B无表,如何复制sql数据库A表到数据库B、如何把数据库中某个表中的数据与结构(包括主外键,索引)全部复制到另一张表中等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/10189605.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-06
下一篇 2023-05-06

发表评论

登录后才能评论

评论列表(0条)

保存