Oracle中导数据,更新数据,从Execel导数据

需要将某张表的数据导出,将该表右键导出为SQL文件,然后,打开新的数据库,

查看新数据库默认的表空间

select username,default_tablespace from user_users;

新建--〉Command Window, 将SQL文件中的表空间信息修改为上面查询到的表空间,如下面的tablespace信息

tablespace USERS
  pctfree 10
  initrans 1
  maxtrans 255;
.......

--create index IDX_SUB_RESOURCE on RABC_SUB_RESOURCE (RESOURCE_ID)
  tablespace USERS

如果SQL语句不多,直接COPY下来,粘贴到Command Window中,如果SQL文件比较大,COPY 到不含中文的目录下,在命令中输入@d:\test.sql

Connected to Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 
Connected as peplat
 
SQL> @C:\Documents and Settings\wu\桌面\test\2014-10-20_SAIRPORT.sql
Error reading file
 
SQL> @d:\test\2014-10-20_SAIRPORT.sql
 
Table created
 
Comment added
 
Table altered
 
1 row inserted
 
1 row inserted
 

成功导入数据。

需要更新开发库中的表的字段, 批量更新的SQL写法:

ORACLE中批量更新表

--更新机组信息

update tb_pointconfig a set (GENERATORID)=
       (select decode(b."GroupId",1,13,2,14) as JZ 
       from sssj b where a.uploadid=b."Id" and a.factoryid=9 and (b."GroupId"=1 or b."GroupId"=2))

--使用MERGE方法更新数据

MERGE INTO tb_realtimedatavalue a
       USING tb_pointconfig b
         ON (a.fid = b.factoryid and a.uploadid=b.uploadid)
         WHEN MATCHED THEN
         UPDATE SET a.pointid = b.id
         WHERE a.fid=13

需要将Execel 表里面的数据导入到 Oracle 表中, 如果数据量比较大, 可以使用 SQL DEV 里面的 Tools / Odbc Importer  , 打开后, 选择标签  Data From  Odbc  , 选择类型 Execel Files  填写用户名密码。



 

然后选择 Data to Oracle 标签, 选择 Oracle 的用户名和表名, 选择字段和字段类型



 

最后, 点击  Import  导入数据.

导 CSV 文本格式选择Text Importor, 点左上角的图标导入文件,设置格式类似,遇到了文本转换为日期的问题,Text 日期格式为 2014-10-24 10:20:20.000 带毫秒的,to_date 函数无法转化,使用 to_timestamp('2011-12-15 10:40:10.345', 'yyyy-MM-dd HH24:MI:ss.ff')

日期解决http://blog.csdn.net/h249059945/article/details/8551820

有时发现导入CSV文件内容是乱码,需要导CSV 文件时设置为 GBK 编码:

NAVICAT 数据库管理工具为例:



 

 

 

 update 方式更新数据,ORACLE和MSSQLSERVER支持的关联语句不一样。

MSSQL:

update s SET s.ZPSG = Isnull(i.PSG, 0)
from S***s s, S***_In*** i where i.A*****om=s.A*****om and s.F*****te = '2015-11-05' 

 ORACLE:

UPDATE S***S S
   SET S.ZPSG =
       (SELECT ZPSG FROM S***IMPORT_ZPSG I WHERE S.ID = I.ID)

参考;   http://hi.baidu.com/cuihenrychl/item/3c720c30f7f84398c3cf29e2

需要更新开发库中的表的字段, 批量更新的SQL写法:

ORACLE中批量更新表

--更新机组信息

update tb_pointconfig a set (GENERATORID)=
       (select decode(b."GroupId",1,13,2,14) as JZ 
       from sssj b where a.uploadid=b."Id" and a.factoryid=9 and (b."GroupId"=1 or b."GroupId"=2))

--使用MERGE方法更新数据

MERGE INTO tb_realtimedatavalue a
       USING tb_pointconfig b
         ON (a.fid = b.factoryid and a.uploadid=b.uploadid)
         WHEN MATCHED THEN
         UPDATE SET a.pointid = b.id
         WHERE a.fid=13

需要将Execel 表里面的数据导入到 Oracle 表中, 如果数据量比较大, 可以使用 SQL DEV 里面的 Tools / Odbc Importer  , 打开后, 选择标签  Data From  Odbc  , 选择类型 Execel Files  填写用户名密码。



 

然后选择 Data to Oracle 标签, 选择 Oracle 的用户名和表名, 选择字段和字段类型



 

最后, 点击  Import  导入数据.

导 CSV 文本格式选择Text Importor, 点左上角的图标导入文件,设置格式类似,遇到了文本转换为日期的问题,Text 日期格式为 2014-10-24 10:20:20.000 带毫秒的,to_date 函数无法转化,使用 to_timestamp('2011-12-15 10:40:10.345', 'yyyy-MM-dd HH24:MI:ss.ff')

日期解决http://blog.csdn.net/h249059945/article/details/8551820

有时发现导入CSV文件内容是乱码,需要导CSV 文件时设置为 GBK 编码:

NAVICAT 数据库管理工具为例:



 

 

 

 update 方式更新数据,ORACLE和MSSQLSERVER支持的关联语句不一样。

MSSQL:

update s SET s.ZPSG = Isnull(i.PSG, 0)
from S***s s, S***_In*** i where i.A*****om=s.A*****om and s.F*****te = '2015-11-05' 

 ORACLE:

UPDATE S***S S
   SET S.ZPSG =
       (SELECT ZPSG FROM S***IMPORT_ZPSG I WHERE S.ID = I.ID)

参考;   http://hi.baidu.com/cuihenrychl/item/3c720c30f7f84398c3cf29e2

猜你喜欢

转载自jxdwuao.iteye.com/blog/1696507