“Diddly”通过精心收集,向本站投稿了8篇如何在Oracle中导入额外字段作为空值数据库,下面小编为大家带来整理后的如何在Oracle中导入额外字段作为空值数据库,希望大家喜欢!

篇1:如何在Oracle中导入额外字段作为空值数据库
我们将我们的 Oracle 数据库 移植到了新的环境中,有一些客户表同时存在于两个数据库中,但是在新环境中的数据库的那些表有一些额外的字段。你能帮助我使用导入/导出工具吗?这样我就可以或者导入新的空值,或者从原来的环境中导出为空值,然后再导入了。非常
我们将我们的Oracle数据库移植到了新的环境中。有一些客户表同时存在于两个数据库中,但是在新环境中的数据库的那些表有一些额外的字段。你能帮助我使用导入/导出工具吗?这样我就可以或者导入新的空值,或者从原来的环境中导出为空值,然后再导入了。非常感谢。
专家回答:
这里有两个类似的选项可以让你从源数据库中转换数据到目标数据库中,同时在目标系统中保存额外的字段。使用导出/导入工具不会让你在目标数据库中保存那些字段。你可以使用带有导出的查询选项,但是这只能允许某些行导出,而不能允许只有某些字段(列)导出。
第一个选择涉及了在源和目标数据库之间创建一个数据库链接,然后使用插入命令来只插入你需要的数据行和字段。这里是例子:
MILY: 宋体; mso-bidi-font-family: 宋体; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt“>INSERT INTO emp (empid, ename, email)<?xml:namespace prefix = o ns = ”urn:schemas-microsoft-com:office:office“ />
SELECT empid, ename, email
FROM emp@remote_db
WHERE ... ;
第二个选择可以使用SQL*Loader,
(责任编辑 火凤凰 sunsj@51cto.com TEL:(010)68476636-8007)
原文转自:www.ltesting.net
篇2:在Word中筛选非空字段收件人记录
在Word2010文档中进行邮件合并时,有时只需选择特定字段非空的收件人作为合并对象,例如只选择“职务”字段含有内容的收件人,操作步骤如下所述:
第1步,打开Word2010文档窗口,切换到“邮件”功能区。在“开始邮件合并”分组中单击“编辑收件人列表”按钮,如图1所示。
办公软件教程
图1 单击“编辑收件人列表”按钮小提示:如果“编辑收件人列表”按钮不可用,则需要在“开始邮件合并”分组单击“选择收件人”按钮,并选择合适的收件人列表,
第2步,打开“邮件合并收件人”对话框,在收件人列表中单击字段名称右侧的下拉三角按钮(本例单击“职务”字段下拉三角按钮),在打开的下拉菜单中选择“非空白”命令。则“职务”字段含有内容的收件人将全部显示,而“职务”字段为空白的收件人将被筛选掉。重复该步骤可以进一步筛选其他字段,如图2所示。
图2 选择“非空白”命令
篇3:教你怎样在Oracle 9i中正确转换时区数据库

在 Oracle 9i之前,虽然有一个NEW_TIME函数可以改变DATE的时间戳部分,但是还没有专门用来存储时区信息的数据类型,在Oracle9i中,我们可以使用DBTIMEZONE伪字段查询 数据库 的时区,使用SESSIONTIMEZONE伪字段查询会话的时区。 但是,对于大多数数据库,这
在Oracle9i之前,虽然有一个NEW_TIME函数可以改变DATE的时间戳部分,但是还没有专门用来存储时区信息的数据类型。在Oracle9i中,我们可以使用DBTIMEZONE伪字段查询数据库的时区,使用SESSIONTIMEZONE伪字段查询会话的时区。
但是,对于大多数数据库,这些值都是-07:00之类的偏移值,因此对于NEW_TIME函数是没有用的。Oracle9i有关NEW_TIME的文档建议使用FROM_TZ来替代,但是这可能会产生误导。FROM_TZ只将一个时区应用到一个时间戳上;它并不能把一个时区转换成另外一个时区。
其实有一个比较好的方法(从文档中得到这个方法可能有点难)。首先,为了完成这个工作,在正确的时区内需要一个TIMESTAMP WITH ZONE数据类型。然后,如果你将关键字AT TIME ZONE应用到那个值,它就会自动地调整为新的时区和日期。
select (timestamp '-04-06 01:59:59' at time zone 'PDT') at time zone 'GMT'from dual;06-APR-03 08.59.59.00000000 AM GMT
这个语句将为太平洋白天时间(即其切换到PST之前的时刻)构造一个TIMESTAMP WITH TIME ZONE然后再将其转换到GMT。AT TIME ZONE关键字也接受默认的偏移值语法:
select (timestamp '2003-04-06 02:00:00' at time zone '-07:00') at time zone'00:00' from dual;06-APR-03 09.00.00.000000000 AM +00:00
你还可以使用伪字段来自动调整当前会话的时区:
selectcurrent_timestamp at time zone dbtimezone from dual;
上面的表达式返回一个当前会话的本地时间(数据类型为时区),重新调整数据库的时区,调整后的时区将与SYSTIMESTAMP的结果相等,
有了以上的这些信息,就可以构造一个比较好的NEW_TIME函数:
create or replace function my_new_time(p_dwtz timestamp with time zone,p_tz varchar2) return dateisbeginreturn cast(p_dwtz at time zone p_tz as date);end my_new_time;/show errors;select my_new_time(sysdate,'+08:00') from dual;
即使第一个参数被标记为一个timestamp with time zone,你依然可以传入一个TIMESTAMP和DATE,这样由于Oracle的自动转型操作,得到的时间将是会话在本地时区的当前时间。这个函数接受包括偏移值在内的任何可以被TIMESTAMP识别的时区,然后将接受的时区调整为正确的值。
(责任编辑 火凤凰 sunsj@51cto.com TEL:(010)68476636-8007)
原文转自:www.ltesting.net
篇4:判断一个字段是否在表中的函数数据库教程
'判断一个字段是否在表中
Function BlnField(sTblName As String, sFldName As String) As Boolean
'sTblName 源表名
'要查找的字段名
Dim fld As Field
Dim rs As DAO.Recordset
BlnField = False
Set rs = CurrentDb.OpenRecordset(sTblName)
rs.Fields.Refresh
For Each fld In rs.Fields
If fld.Name = sFldName Then
BlnField = True
Exit For
End If
Next
rs.Close
Set rs = Nothing
Set fld = Nothing
End Function
Private Sub 命令0_Click
'返回True则有此字段,False则无
MsgBox BlnField(”tbl1“, ”ID")
End Sub
篇5:搜索某个字符串在那个表的那个字段中数据库教程
字符串
--搜索某个字符串在那个表的那个字段中
declare @str varchar(100)
set @str='White' --要搜索的字符串
declare @s varchar(8000)
declare tb cursor local for
select s='if exists(select 1 from ['+b.name+'] where ['+a.name+'] like ''%'+@str+'%'')
print ''所在的表及字段: ['+b.name+'].['+a.name+']'''
from syscolumns a join sysobjects b on a.id=b.id
where b.xtype='U' and a.status>=0
and a.xusertype in(175,239,231,167)
open tb
fetch next from tb into @s
while @@fetch_status=0
begin
exec(@s)
fetch next from tb into @s
end
close tb
deallocate tb
/*--测试结果
所在的表及字段: [authors].[au_lname]
--*/
篇6:在查询分析器中,用快捷键取得字段的列表。数据库教程
查询分析|用快捷键
ALTER procedure sp_getfields
@tablename varchar(100)
as
declare tmpCursor cursor for
select name from syscolumns where id = Object_ID(@tablename)
open tmpCursor
declare @fieldname varchar(50)
declare @sqlstr1 varchar(250)
declare @sqlstr2 varchar(250)
set @fieldname = ''
set @sqlstr1 = ''
set @sqlstr2 = ''
fetch next from tmpCursor into @fieldname
while @@fetch_status = 0
begin
if len(@sqlstr1) < 250 - len(@fieldname)
set @sqlstr1 = @sqlstr1 + @fieldname + ','
else
set @sqlstr2 = @sqlstr2 + @fieldname + ','
fetch next from tmpCursor into @fieldname
end
close tmpCursor
Deallocate tmpCursor
if @sqlstr2 = ''
set @sqlstr1 = left(@sqlstr1, len(@sqlstr1) -1)
else
set @sqlstr2 = left(@sqlstr2, len(@sqlstr2) -1)
select @sqlstr1
if @sqlstr2 ''
select @sqlstr2
加了快捷键后,在查询分析器中,选中一个表名,按相应的快捷键,酷吧,
在查询分析器中,用快捷键取得字段的列表,
电脑资料
《在查询分析器中,用快捷键取得字段的列表。数据库教程》()。数据库教程。
篇7:在oracle中限制返回结果集的大小(译)数据库
Oracle不支持类似于 MySQL 中的 limit. 但你还是可以rownum来限制返回的结果集的行数.
如果你只希望返回前十行纪录,你可以这样写:
SELECT * FROM table WHERE ROWNUM<10;
但是下面的语句是不对的:
SELECT * FROM table WHERE ROWNUM>90 AND ROWNUM<100;
这是因为 Oracle 认为这个条件不成立,所以没有返回,
在oracle中限制返回结果集的大小(译)数据库
,
你应该这样写:
SELECT * FROM table WHERE ROWNUM<101;
minus
SELECT * FROM table WHERE ROWNUM<91;
sonymusic
原文转自:www.ltesting.net
篇8:临时表在Oracle数据库与SQL Server数据库中的异同
常见应用:
临时表在数据库设计中,有着举足轻重的作用,
如我们可以利用临时表的功能来限制同一个用户名多次登陆到同一个系统中去。例如现在有一个财务管理系统,企业希望同一个用户在同一时间里只能登陆一次,这主要是用来限制每位员工都以自己的用户名与密码登陆。如此限制的目的主要是为财务管理系统中的每张单据找到其主人。
原始方案:
在以前数据库设计的时候,也有人不用临时表进行这方面的限制,而用实体数据库表来登记相关的信息。如在用户信息表中有一列专门用来记录用户的当前登陆状态。当用户登陆系统后,该用户登陆状态的字段就改为Y,而当用户退出系统能后,该字段的内容又改为N。这个方案看起来是可行的,但是,其在实际应用中,有一个非常大的漏洞。若用户登陆到系统后,终端因为各种原因,如病毒、断电等突然状况,发生死机的话,此时,用户虽然没有登陆到系统中去,但是,因为其退出系统的时候,没有正常退出,这就导致在财务管理系统中的用户信息表中,显示该用户的登陆状态仍然为Y。此时,用户尝试登陆到财务管理系统中去的话,就会被系统拒绝,系统会认为该用户已经登陆了系统,不能重复登陆。
所以说,利用实体表来记录用户登陆的信息,存在着管理上的漏洞。
利用临时表实现用户重新登陆的限制:
后来,数据库设计师们想,能否把该用户登陆信息记录在一张临时性的表中呢?当用户结束会话,无论是正常的退出还是因为意外情况的退出,只要用户结束一个会话后,那么该临时表中的内容就会清空。
若跟这个需求结合的话,数据库设计师就希望能够实现如下功能。
当用户登陆系统开始一个会话后,数据库系统就建立一张临时表,该表中至少有一个内容,就是用户的帐号(或者该帐号对应的ID)。当有其他用户登陆到系统的时候,系统会先从这张临时表中查询,是否有相同的用户记录。若有的话,就会拒绝用户的登陆,警告用户已经有相同的用户登陆了。当用户正常退出系统或者因为以外情况退出系统结束当前会话的时候,那么数据库系统就会清除这张表的内容。如此,当用户下次登陆系统的话,即使是在意外情况下登陆系统的,也可以正常的登陆,
可见,数据库的临时表在企业实际应用中有着举足轻重的作用。
在ORACLE数据库与SQL SERVER数据库中,都实现了临时表的功能。不过两者实现的方式有差异。而不同的实现方式又赋予了其不同的特点,这是我们在数据库选型中不得不重视的一方面内容。
两个数据库临时表实现方式的异同:
SQL SERVER临时表跟ORACLE数据库临时表的差异,可以利用一句话来概括。SQL SERVER 临时表是在需要用到的时候创建;而ORACLE 数据库的临时表,则是在数据库初始化中就开始创建,在具体的会话或者事务开始后进行操作,结束一个会话或者结束一个事务后该数据库的内容就会被清空。
1、在创建时的异同。
SQL SERVER 数据库的临时表,是在实际需要时创建的。具体的来说,可以利用SELECT语句与CREAT语句创建临时表。如可以利用SELECT * INTO #USER_TEMP FROM USER;通过这条语句就可以在需要的时间创建一张临时表。除此之外,还可以利用CREATE语句,在需要的时候创建临时表。
而ORACLE数据库,是在数据库系统初始化的过程中,就需要建立临时表。也就是在用户安装财务管理软件系统时,初始化数据库系统时,系统就会创建临时表。而不是在临时表需要用到的时候,才被创建。故,ORACLE数据库的临时表创建方式只有一种,在数据库初始化的时候,利用CREATE创建数据库临时表。所以,ORACLE数据库临时表,又有另一种说法。我们一般称ORACLE数据库的临时表是永久性的,只是临时表的内容是临时的,在需要用到临时表时,只要直接调用即可,而不用临时创建。这不像SQL SERVER数据库那样,只有在用到时,才创建该临时表;当结束会话时,不仅表中的数据被清空了,而且该表也被删除了。
笔者评论:
笔者还是比较喜欢ORACLE数据库临时表的实现方式。为什么呢?因为我们都知道,数据库定义语言,如CREATE等,比较占用系统资源。若在数据库SQL SERVER数据库系统设计的过程中,前台程序频繁的使用CREATE等数据库定义语言创建临时表的话,会对SQL server数据库系统的运行效率产生很大的不利影响;而且,每次运行的话,都会有类似的不利影响,因为每次运行都会有一个创建临时表的过程。而ORCLE数据库中,则是在系统初始化的时候才利用CREATE语句,所以,只是在系统初始化的时候,可能性能会受到影响,而在以后的数据库运行中,就不会为这个老是运行CREATE语句而困饶。所以,我个人还是比较喜欢采用ORACLE系统的临时表处理方案。












