oracle怎么更新分区表的数据默认情况下 , oracle的分区表对于分区字段是不允许进行update操作的 , 如果有对分区字段行进update , 就会报错——ORA-14402: 更新分区关键字列将导致分区的更改 。但是可以通过打开表的row movement属性来允许对分区字段的update操作 。
例:创建分区表test_part进行实验
create table TEST_PART
(
A1 NUMBERnot null,
A2 DATEnot null,
A3 VARCHAR2(6) not null,
A4 DATE not null,
A5 NUMBER not null,
)
partition by range (A1)
(
partition P1 values less than (1000),
partition P2 values less than (2000),
partition P3 values less than (3000),
partition P4 values less than (4000),
partition P5 values less than (5000),
partition P6 values less than (MAXVALUE)
);
插入如下的数据
SQL select * from test_part;
A1 A2A3A4A5
---------- ----------- ------ ----------- ----------
123 2006-06-30123456 2006-06-30123
456 2006-06-30asdfgh 2006-06-30456
1 2006-06-30234123 2006-06-301
2 2006-06-30234234 2006-06-302
1234 2006-06-30456789 2006-06-301234
1111 2006-06-30ewrqwe 2006-06-301111
2222 2006-06-30fdafda 2006-06-302222
3333 2006-06-30342342 2006-06-303333
5678 2006-06-30qwerty 2006-06-305678
9 rows selected
分区P1、P2的数据分别为:
SQL select rowid,t.* from test_part partition(p1) t;
ROWIDA1 A2A3A4A5
------------------ ---------- ----------- ------ ----------- ----------
AAAGLoAAGAAAtsEAAB456 2006-06-30asdfgh 2006-06-30456
AAAGLoAAGAAAtsEAAC1 2006-06-30234123 2006-06-301
AAAGLoAAGAAAtsEAAD2 2006-06-30234234 2006-06-302
AAAGLoAAGAAAtsEAAE123 2006-06-30123456 2006-06-30123
SQL select rowid,t.* from test_part partition(p2) t;
ROWIDA1 A2A3A4A5
------------------ ---------- ----------- ------ ----------- ----------
AAAGLwAAGAAA 8MAAC1234 2006-06-30456789 2006-06-301234
AAAGLwAAGAAA 8MAAD1111 2006-06-30ewrqwe 2006-06-301111
直接update提示错误
SQL update test_part set a1=1123 where a1=123;
update test_part set a1=1123 where a1=123
ORA-14402: 更新分区关键字列将导致分区的更改
打开row movement属性
SQL alter table test_part enable row movement;
Table altered
再次执行update操作
SQL update test_part set a1=1123 where a1=123;
1 row updated
执行是成功的并迁移到分区P2上了 , 且这时候rowid也发生了变化
SQL select rowid,t.* from test_part partition(p2) t;
ROWIDA1 A2A3A4A5
------------------ ---------- ----------- ------ ----------- ----------
AAAGLwAAGAAA 8MAAC1234 2006-06-30456789 2006-06-301234
AAAGLwAAGAAA 8MAAD1111 2006-06-30ewrqwe 2006-06-301111
AAAGLwAAGAAA 8PAAB1123 2006-06-30123456 2006-06-30123
SQL
enable row movement可以允许数据段的压缩、update分区字段的数据(跨分区的)
如何更新oracle表中的分区字段1、按时间分区表创建: 其中add_date_time为分区字段oracle怎么更新表 , 每一年一个分区 。插入100W数据 。
2、增加一个分区oracle怎么更新表 , 分两种情况:1.没有maxvalue分区 。2.有maxvalue分区 。
3、创建的分区就是没有maxValue的分区oracle怎么更新表,没有maxvalue分区添加新分区 。
4、有maxvalue分区添加新分区:有oracle怎么更新表了maxvalue,就不能直接add partition,而是需要max分区split 。
5、合并分区 , 相邻的分区可以merge为一个分区 , 新分区的下边界为原来边界值较低的分区,上边界为原来边界值较高的分区,原先的局部索引相应也会合并,全局索引会失效,需要rebuild 。
在oracle怎样更新表中的数据操作步骤如下:
准备数据:在excel中构造出需要的数据
2.将excel中的数据另存为文本文件(有制表符分隔的)
3.将新保存到文本文件中的数据导入到pl*sql中
在pl*sql中选择tools--text
importer,在出现的窗口中选择"Data
【oracle怎么更新表 oracle查询表更新时间】from
Textfile",然后再选择"Open
data
file",
在弹出的文件选择框中选中保存有数据的文本文件 , 此时将会看到data
from
textfile中显示将要导入的数据
4.在configuration中进行如下配置
注:如果不将"Name
in
header"勾选上会导致字段名也当做记录被导入到数据库中 , 从而导致数据错误
5.点击data
to
oracle,选择将要导入数据的表,并在fields中将文本中的字段与表中的字段进行关联
6.点击import按钮进行导入
7.查看导入的数据
OK,至此数据导入成功 。
Oracle多表更新问题可以用游标来执行更新,也可以用update语句更新 。
但是oracle没有update from语句,可以用子查询来给源数据表的字段赋值,如果需要赋多个值的话,则用括号括起来,格式:
update table_name
set (field1, field2, ... ) = (select value1, value2, ... from source_table)
where ...
而where条件中则可以用exists测试是否要更新记录 。更新语句大概这样:
update A s1
set a5 = (select b6
from B s2
where s2.b1 = s1.a1 and s2.b2 = s1.a2 and s2.b3 = s1.a3 and rownum = 1)
where exists (
select b6
from B s2
where s2.b1 = s1.a1 and s2.b2 = s1.a2 and s2.b3 = s1.a3 and rownum = 1
)
即赋值子句和where条件是类似的 。
C#.net 如何更新ORACLE表C#利用update更新数据到oracle数据库:
第一步:打开oracle数据库
public static string connString = "";
public static OracleConnection conn = null;
//打开数据库连接
public static bool Open()
{
//从配置文件中获取连接字符串
//配置文件需要放在项目目录下的bin\Release中
connString = getXmlValue("connString");
conn = new OracleConnection(getXmlValue("connString"));
try
{
conn.Open();
Console.WriteLine("数据库连接成功");
return true;
}
catch (System.Exception ex)
{
Console.Write(ex.Message);
MessageBox.Show("未能连接到数据库");
return false;
}
第二步:执行更新方法:
public static int update(int ruleId, int equipmentId, String equipmentName, String propertyName, int ruleType, String ruleRequest, String ruleRequestOther, String ruleExplain)
{
String sql = "update Device_Attr t set t.BASEID = :equipmentId, t.BASENAME = :equipmentName,t.CA_NAME = :propertyName,t.CA_RULETYPE = :ruleType,t.CA_RULETEXT = :ruleRequest,t.CA_RULETEXT2 = :ruleRequestOther,t.CONTENT = :ruleExplain where t.CA_ID =:ruleId";
OracleCommand cmd = new OracleCommand(sql, conn);
OracleParameter param_1 = new OracleParameter(":equipmentId", equipmentId);
cmd.Parameters.Add(param_1);
OracleParameter param_2 = new OracleParameter(":equipmentName", equipmentName"$");
cmd.Parameters.Add(param_2);
OracleParameter param_3 = new OracleParameter(":propertyName", propertyName);
cmd.Parameters.Add(param_3);
OracleParameter param_4 = new OracleParameter(":ruleType", ruleType);
cmd.Parameters.Add(param_4);
OracleParameter param_5 = new OracleParameter(":ruleRequest", ruleRequest);
cmd.Parameters.Add(param_5);
OracleParameter param_6 = new OracleParameter(":ruleRequestOther", ruleRequestOther);
cmd.Parameters.Add(param_6);
OracleParameter param_7 = new OracleParameter(":ruleExplain", ruleExplain);
cmd.Parameters.Add(param_7);
OracleParameter param_8 = new OracleParameter(":ruleId", ruleId);
cmd.Parameters.Add(param_8);
int result = cmd.ExecuteNonQuery();
return result;
}
oracle中怎么update一张表update 表名 set 字段A=值1 where 符合什么条件再update操作;
你问题可以再描述的清楚一些 , 比如表有几个字段,需要怎么更新,update语句本身演变很大的 , 可以实现很多操作的 。
关于oracle怎么更新表和oracle查询表更新时间的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站 。
推荐阅读
- 公众号怎么重点标注,公众号怎么重点标注文章
- 开心视频小程序,开心视频搞笑视频动画
- 人像拍摄什么叶子,主要拍人像用什么镜头
- linux命令符号大全 linux 符号
- 七彩虹显卡1070怎么样,七彩虹1070显卡多少钱
- 电视屏幕黑一半怎么弄,电视黑屏一半怎么调
- jquery选表格中的某个数据,jquery中表单选择器
- preto查询hbase,hbase查询最新的数据
- python数据分段统计,python分段计算