[]从一个数据库将一个用户模式导出到另外一个数据库

时间:2023-03-04 08:10:12 其他范文 收藏本文 下载本文

[]从一个数据库将一个用户模式导出到另外一个数据库(整理8篇)由网友“zaqxswcde168”投稿提供,以下是小编收集整理的[]从一个数据库将一个用户模式导出到另外一个数据库,希望对大家有所帮助。

[]从一个数据库将一个用户模式导出到另外一个数据库

篇1:[]从一个数据库将一个用户模式导出到另外一个数据库

select file_name,tablespace_name from dba_data_files where tablespace_name in ('WORK01');

4.检查B机器的表空间,看是否存在work01表空间

select name from v$tablespace where name = ‘WORK01’;

查找不到,说明没有这个两个表空间,需要创建

5.要导入数据的server没有work01表空间,创建:

create tablespace work01

datafile '/u01/oradata/orac/work01.dbf'

size 200m

autoextend on

next 20m

maxsize unlimited

extent management local;

6. 在要导入的数据库上查找用户是否已经存在

select username from dba_users where username='CMS';

如果存在:

drop user cms cascade; --(删除用户及其拥有的所有对象)

-- 此时如果这个用户在连接,drop会出错,必须先杀掉用户的session,然后再drop

SELECT 'alter system kill session '''||SID||','||SERIAL#||''' immediate;'

FROM V$SESSION

WHERE USERNAME='CMS';

alter system kill session '93,56387' immediate;

alter system kill session '100,18899' immediate;

alter system kill session '135,24910' immediate;

alter system kill session '149,3' immediate;

alter system kill session '152,3' immediate;

alter system kill session '156,7' immediate;

alter system kill session '159,45889' immediate;

alter system kill session '160,1' immediate;

alter system kill session '161,1' immediate;

alter system kill session '162,1' immediate;

alter system kill session '163,1' immediate;

--再复制这些语句,粘贴到sqlplus中执行,来杀掉Test2的session,

如果不存在cms用户:

create user cms identified bycms default tablespace work01 temporary tablespace temp;

不管存不存在都应该给cms授权

grant connect,resource to cms;

7.最后将数据导入

下面在windows的cmd下将用户导进去

imp file=e:\cms.dmp fromuser=cms touser=cms userid=cms/cms@orac

这里要注意的是之前我是用cms用户将数据导出来的,这个cms具有dba权限,那么这里导入的时候用的userid后面的cms也必须具有这个权限不然会报错

这里我们可以临时给cms赋予dba权限,最后回收他,但是回收之后,记得再给cms赋予resource权限。

篇2:[]从一个数据库将一个用户模式导出到另外一个数据库

1. 导出用户 例:导出cms用户

exp cms/cms@orcl grants=n feedback=10000 file=e:\cms.dmp wner=cms

只要在本机设置了TNS――orcl,知道system用户名和密码就可以导出数据到本地

grants=n 表示不导出权限

feedback表示10000条记录反馈一次――表现在终端就是一个黑点

file就是导出的文件存放在哪

owner指明从哪个用户下导出,这里是cms

从orcl上导出数据文件到指定目录(目录名称自己定义,只要自己能找到就行,和用户名没有关系)

2. 导入用户

imp file=e:\cms.dmp fromuser=cms touser=cms userid=cms/cms@orac

这里要注意几个问题:1.在机器orcl上查看用户默认表空间,以便导入时创建一样的表空间

select username,default_tablespace from dba_users where username ='CMS';

2.查看用户使用的表空间

select DISTINCT owner ,tablespace_name from dba_extents where owner like 'CMS';

3.查看表空间对应的数据文件,以便在B上创建大小合适的数据文件,

篇3:一个将数据导出到EXCEL的存储过程数据库教程

excel|存储过程|数据

/*--数据导出EXCEL

导出查询中的数据到Excel,包含字段名,文件为真正的Excel文件

,如果文件不存在,将自动创建文件

,如果表不存在,将自动创建表

基于通用性考虑,仅支持导出标准数据类型

作者:邹建

--*/

/*--调用示例

p_exporttb @sqlstr='select * from 地区资料'

,@path='c:\',@fname='aa.xls',@sheetname='地区资料'

--*/

create proc p_exporttb

@tbname sysname,   --要导出的表名

@path nvarchar(1000),  --文件存放目录

@fname nvarchar(250)='' --文件名,默认为表名

as

declare @err int,@src nvarchar(255),@desc nvarchar(255),@out int

declare @obj int,@constr nvarchar(1000),@sql varchar(8000),@fdlist varchar(8000)

--参数检测

if isnull(@fname,'')='' set @fname=@tbname+'.xls'

--检查文件是否已经存在

if right(@path,1)'' set @path=@path+''

create table #tb(a bit,b bit,c bit)

set @sql=@path+@fname

insert into #tb exec master..xp_fileexist @sql

--数据库创建语句

set @sql=@path+@fname

if exists(select 1 from #tb where a=1)

set @constr='DRIVER={Microsoft Excel Driver (*.xls)};DSN='''';READONLY=FALSE'

+';CREATE_DB=“'+@sql+'”;DBQ='+@sql

else

set @constr='Provider=Microsoft.Jet.OLEDB.4.0;Extended Properties=“Excel 8.0;HDR=YES'

+';DATABASE='+@sql+'”'

--连接数据库

exec @err=sp_oacreate 'adodb.connection',@obj out

if @err0 goto lberr

exec @err=sp_oamethod @obj,'open',null,@constr

if @err0 goto lberr

/*--如果覆盖已经存在的表,就加上下面的语句

--创建之前先删除表/如果存在的话

select @sql='drop table ['+@tbname+']'

exec @err=sp_oamethod @obj,'execute',@out out,@sql

--*/

--创建表的SQL

select @sql='',@fdlist=''

select @fdlist=@fdlist+',['+a.name+']'

,@sql=@sql+',['+a.name+'] '

+case when b.name in('char','nchar','varchar','nvarchar') then

'text('+cast(case when a.length>255 then 255 else a.length end as varchar)+')'

when b.name in('tynyint','int','bigint','tinyint') then 'int'

when b.name in('smalldatetime','datetime') then 'datetime'

when b.name in('money','smallmoney') then 'money'

else b.name end

FROM syscolumns a left join systypes b on a.xtype=b.xusertype

where b.name not in('image','text','uniqueidentifier','sql_variant','ntext','varbinary','binary','timestamp')

and object_id(@tbname)=id

select @sql='create table ['+@tbname

+']('+substring(@sql,2,8000)+')'

,@fdlist=substring(@fdlist,2,8000)

exec @err=sp_oamethod @obj,'execute',@out out,@sql

if @err0 goto lberr

exec @err=sp_oadestroy @obj

--导入数据

set @sql='openrowset(''MICROSOFT.JET.OLEDB.4.0'',''Excel 8.0;HDR=YES

;DATABASE='+@path+@fname+''',['+@tbname+'$])'

exec('insert into '+@sql+'('+@fdlist+') select '+@fdlist+' from '+@tbname)

return

lberr:

exec sp_oageterrorinfo 0,@src out,@desc out

lbexit:

select cast(@err as varbinary(4)) as 错误号

,@src as 错误源,@desc as 错误描述

select @sql,@constr,@fdlist

GO

========================================

NinGoo注:

Excel文件每个工作表不能超过65536条记录

解决办法:

.如果数据量大于65536,可以在调用存储过程前先将要导出的table拆分成几个小的临时table,然后

在分别导出到不同的工作表中

篇4:Android 如何从一个APP中打开另外一个APP

众所周知,在一个APP内部,从一个页面跳转到另外一个页面是使用startactivity函数来实现的,

同样的,对于应用之间的跳转也是如此的。应用直接的跳转分为三种情况,为了方便描述,我加上有两个应用A和B,需求是要从A点击一个按钮,可以跳转到B,同时A要传数据给B,B能够接收并且处理:

1.从A跳转到B的主Activity,代码如下:

Intent intent = new Intent(Intent.ACTION_MAIN); intent.addCategory(Intent.CATEGORY_LAUNCHER); ComponentName comp = new ComponentName(“com.nbg.baby”, “com.nbg.baby.MainActivity”); intent.setComponent(comp); int launchFlags = Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED; intent.setFlags(launchFlags); intent.setAction(“android.intent.action.VIEW”); Bundle bundle = new Bundle; bundle.putString(“from”, “来自测试应用”); intent.putExtras(bundle); startActivity(intent);

1.1如果B是应用是关闭的,那么在onCreate()函数中增加如下语句:

Bundle bundle = this.getIntent().getExtras(); if(bundle!=null && bundle.getString(“from”)!=null){ Util.showToast(s_instance, bundle.getString(“from”), Toast.LENGTH_LONG); }

1.2 如何B应用是开启状态,那么在onRestart()函数中增加如下语句:

Bundle bundle = this.getIntent().getExtras(); if(bundle!=null && bundle.getString(“from”)!=null){ Util.showToast(s_instance, bundle.getString(“from”), Toast.LENGTH_LONG); }

2.从A跳转到B的某个被设置为exported的activity,B应用的状态无关紧要,代码如下:

ComponentName comp = new ComponentName(“com.nbg.baby”,“com.nbg.baby.ApiLoginActivity”); Intent intent = new Intent(); intent.setComponent(comp); intent.setAction(Intent.ACTION_VIEW); Bundle bundle = new Bundle(); bundle.putString(“extra”, “我来自星星”); intent.putExtras(bundle); context.startActivityForResult(intent, 1);

篇5:如何无需编程便将数据SQL导出到MYSQL数据库教程

mysql|编程|数据

从sql导出到mysql的方法很多,现介绍一种无需编程,直接利用sql和mysql里的图形界面进行导入导出的简单方法,

前提是已经安装了sqlserver客户端和mysql的图形界面管理工具phpmyadmin。

在控制台根目录下打开sqlserver企业管理器,新建sqlserver组,根据自己的情况进行选择;然后新建sqlserver 注册,进行对sqlserver的连接。准备妥当后,下面就开始了:

首先打开数据转换服务,新建包,打开DTS界面,在连接中选择数据源进行配置。再选择将要转换到的目的文件,这里我选的 Textfile(destination),选择好文件的存放位置之后,我们来新建一个任务,

这里我们只选择转换数据任务,将带有“选择源连接”“选择目的连接”的鼠标分别选中数据源和目的之后,我们对新生成的连接进行定义,在其属性中将源,目的,转换依次定义。

执行任务,提示成功。保存任务。然后在新建的任务上导出数据,有向导提示,其中一项选择“从源数据库复制表和视图”。

这一步已经把数据导出到目的文件中。

下一步在mysql中新建表,与将要导入的结构保持一致时,直接选取“从文本文件中提取数据,插入到数据表:”,将选项添好后,“发送”就可以了,浏览一下,数据已导入了。若要导入的表已经存在,且属性名也不同,这时就先建一个与要导入的数据相同结构的表并导入数据(按刚才的进行就可以了),然后在mysql中导出“数据和结构”,得到sql语句,将其在文本文件中编辑,利用文本编辑器的替换功能,将表名修改,列名加入,最后将其粘贴在要导入表的执行sql语句的地方,执行一下,数据便导入了。

若过程中出现错误,请仔细检查配置的选项,确保正确。

篇6:将一个更新划分为几个批次数据库教程

问:我想以一次5,000行的方式批量更新一个大型表,但我不知道怎样分割数据,该表不包含增量数字或整数主键。怎样才能在保持良好性能的同时实现数据更新呢?

答:如果知道哪些行尚未被更新,您可以使用简单的谓词来排除已更新的行,ROWCOUNT设置可以帮助您批量分割数据。以下的代码清单说明了如何使用该设置:

SET ROWCOUNT 1000

WHILE (1=1) BEGIN

BEGIN TRANSACTION

UPDATE...set ...,MyLastUpdate='date',...WHERE

MyLastUpdate < 'date'

-- 更新1000未更新行

IF @@ROWCOUNT = 0

BEGIN

COMMIT TRANSACTION

BREAK

END

COMMIT TRANSACTION

END

在指定的行数返回后,ROWCOUNT将使SQL Server停止查询处理,

这项技术很有用,因为它避免了大量更新所致的并发命中;更新中的行数越少,更新任务使其他用户不能访问该数据的可能性就越小。结合事务日志备份,这一方法还可以使您的事务日志的大小降至最低。

如果没有识别已更新行的机制,您可以使用游标遍历所有数据并提交每个x值。但是,游标占用服务器资源的时间通常要多于基于集合的语句。

―Microsoft SQL Server开发团队

篇7:一个交叉表数据库教程

一个交叉表.用字段明做为值:原表数据为:

字段1   字段2   字段3

A1           B1           C1

A2           B2           C2

变换后:

COL1         COL2        COL3

字段1           A1                A2

字段2            B1                B2

字段3            C1                C2

create table tablename (字段1 varchar(100),字段2 varchar(100),字段3 varchar(100))

insert tablename select 'gsm900/1800mhz/gprs', '85*44*21mm', '80'

union all select 'gsm900/1800mhz/gprs' ,'82*46*21.5mm', '79'

go

SELECT  top 0

字段名=a.name

into abc

FROM syscolumns a

inner join sysobjects d on a.id=d.id

left join sysproperties f on d.id=f.id and f.smallid=0

where   d.xtype='U' and d.name = 'tablename'

order by a.id,a.colorder

SELECT  top 0

note =a.name

into abcd

FROM syscolumns a

inner join sysobjects d on a.id=d.id

left join sysproperties f on d.id=f.id and f.smallid=0

where   d.xtype='U' --表示用户类型

and d.name = 'tablename'  -- 需要获取字段的表

order by a.id,a.colorder

declare @num int , @Col varchar(50) , @Name varchar(200), @Name1 varchar(200) , @count int , @num1 varchar(5)

select @num = 1

select @count = count(*) from tablename

while (@count >0)

begin

select @Col = 'Col' + convert(varchar, @num)

exec('ALTER TABLE abc add [' + @Col + '] varchar(200) NULL ')

select @num = @num +1

set @count = @count - 1

end

DECLARE AddNameColumns_Cursor INSENSITIVE CURSOR                    --取字段值

FOR

SELECT

filedname = a.name

FROM syscolumns a

inner join sysobjects d on a.id=d.id

left join sysproperties f on d.id=f.id and f.smallid=0

where   d.xtype='U' and d.name = 'tablename'

order by a.id,a.colorder

OPEN AddNameColumns_Cursor

BEGIN

FETCH NEXT FROM AddNameColumns_Cursor INTO @Name  --对应相应字段值

WHILE @@FETCH_STATUS = 0

BEGIN

insert into abc (字段名)

select fname = @Name

delete abcd

exec (' insert into abcd (note) select name = [' + @Name +'] from tablename ')

select @num = 1

DECLARE AddNameColumns_Cursor1 INSENSITIVE CURSOR

FOR select note  from abcd

OPEN AddNameColumns_Cursor1

BEGIN

FETCH NEXT FROM AddNameColumns_Cursor1 INTO @Name1

WHILE @@FETCH_STATUS = 0

BEGIN

select @num1 = convert(varchar, @num)

exec('update abc set [Col'+ @num1 + '] = ''' + @Name1+'''  where 字段名='''+ @Name +'''')

print 'update abc set [' + @Col + '] = ''' + @Name1+'''  where 字段名='''+ @Name +''''

select @num = @num +1

FETCH NEXT FROM AddNameColumns_Cursor1 INTO @Name1

END

END

CLOSE AddNameColumns_Cursor1

DEALLOCATE AddNameColumns_Cursor1

FETCH NEXT FROM AddNameColumns_Cursor INTO @Name

END

END

CLOSE AddNameColumns_Cursor

DEALLOCATE AddNameColumns_Cursor

select * from abc

SELECT * FROM tablename

drop table tablename

drop table abc

drop table abcd

篇8:将列更新从一个表传递到另一个表数据库教程

问:怎样在一个UPDATE语句中使用表B的三个列更新表A中的三个列?

答:对这个问题,您可以使用强大的关系代数,本页中的代码说明了如何组合使用FROM子句和JOIN操作,以达到用其他表中数据更新指定列的目的。在设计关系表达式时,您需要决定是否需要单一行匹配多个行(一对多关系),或者需要多个行匹配被联接表中的单一行以更新所有行(多对一关系)。

在一对多关系中,SQL Server始终使用它找到的最后一行更新数据。但是,您无法控制最后一行所在的位置。在多处理器的计算机上,查询可能是同步进行的,相同的查询最后一行的位置可能会不同。因此,Microsoft建议尽量不要使用一对多关系。

如果待更新的表与FROM子句中的表相同,并且FROM子句只包含对该表的一个引用,别名可能未被指定。如果待更新的表在FROM子句中出现了多次,只有该表的一个引用可以省略表的别名,对该表的所有其他引用必须包含一个表别名。

USE tempdb

GO

CREATE TABLE #t1 (c1 int NOT NULL, c2 char(5), c3 char(5),

c4 char(5))

GO

CREATE TABLE #t2 (c1 int NOT NULL, c2 char(5), c3 char(5),

c4 char(5))

GO

--数据赋值

INSERT #t1 values (1,'hello','there','fred')

INSERT #t2 values (1,'how','are','you?')

--更新数据

UPDATE #t1 SET #t1.c2 = #t2.c2, #t1.c3 = #t2.c3,

#t1.c4 = #t2.c4

FROM #t2

WHERE #t1.c1 = #t2.c1

--检查结果

SELECT * FROM #t1

―Microsoft SQL Server开发团队

如何保护MySQL 中的重要数据

WinPE注册表优化小技巧

思维导图软件:XMIND简介

Windows的“同步”功能

石油工程计量管理信息系统设计论文

Win XP/系统服务备份与保护

教你用Linux完成Oracle自动物理备份

基于分层结构的管理信息系统架构设计探究论文

立项建议书

软件试用报告范文

[]从一个数据库将一个用户模式导出到另外一个数据库
《[]从一个数据库将一个用户模式导出到另外一个数据库.doc》
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:
点击下载文档

【[]从一个数据库将一个用户模式导出到另外一个数据库(整理8篇)】相关文章:

CAD 教程:曲面命令创建楼房2023-04-16

java金融项目简历2022-09-04

企业论文2023-04-10

数据挖掘技术在WEB的运用论文2023-05-25

Excel中多条件求和sumifs用法详解excel办公/数码2023-09-18

分析工程变更计量的论文2024-05-14

投资立项建议书2022-06-28

计算机辅助工程计量的论文2022-07-15

提高:操作系统重装全功略2022-04-30

备份与恢复Win的AD数据库Windows系统2022-04-30

点击下载本文文档