[]从一个数据库将一个用户模式导出到另外一个数据库(整理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开发团队
★ 立项建议书
★ 软件试用报告范文
【[]从一个数据库将一个用户模式导出到另外一个数据库(整理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