Oracle总结

Oracle总结 1、Oracle常用sql命令 1、查看建表语句

select dbms_metadata.get_ddl('TABLE','COMMUNITY') from dual;

COMMUNITY为表名必须大写
2.创建表
create table TEST ( idVARCHAR2(30), nameVARCHAR2(30), sexNUMBER(1), birthday TIMESTAMP(6) )

3.insert
三种插入语法:
insert into 表名 values(值1,值2,......); insert into 表名(列1,列2,......)values(值1,值2,......); insert into 表2 select * from 表1;

可以用于批量插入
insert into test (id, name, sex) select t.id,t.name,'0' from table_name_b t group by id;

4.delete
DELETE FROM 表名称 WHERE 列名称 = 值

5.update
UPDATE 表名称 SET 列名称 = 新值 WHERE 列名称 = 某值 update test set name='lucy' where name='tom'//多个列至更新 UPDATE 表名称 SET 列名称1 = 新值1,列名称2 = 新值2, 列名称3 = 新值3WHERE 列名称 = 某值

6.select
--查询指定列 SELECT 列名称 FROM 表名称 --查询所有列 SELECT * FROM 表名称select * from test

7.drop
删除表名
drop table 表名;

8.alter
ALTER TABLE (表名) ADD (列名 数据类型); ALTER TABLE (表名) MODIFY (列名 数据类型); ALTER TABLE (表名) RENAME COLUMN (当前列名) TO (新列名); /不需要括号 ALTER TABLE (表名) DROP COLUMN (列名); ALTER TABLE (当前表名) RENAME TO (新表名);

2、CSV数据导入Oracle
csv文件中一行数据 多个字段按逗号分割
1.切换oracle用户
2.将csv文件与ctl文件放入当前oracle用户下的目录里 (一般是 /home/oracle)
3.执行运行脚本 sqlldr control=\csvName.ctl
4.输入用户名 密码
5.等待插入完即可
6.可以删除 ctl与csv文件
7.在可视化工具中进行检查结果
load data infile 'csvName.csv' "str '\r\n'" append into table test fields terminated by ',' OPTIONALLY ENCLOSED BY '"' AND '"' trailing nullcols ( name VARCHAR2(20) )

  1. "str '\r\n'用处
    利用sqlloader导入会出现ORA-01722:invalid number问题;
原因:由于数据文件是在Windows中编辑的,存在换行符,如果integer或者number类型的字段位位于表的最后,最后会有CR/LF的换行符,在使用sqlldr导入的时候换行符也包含在最后一个字段中,使得对应的导入的值与数据库中定义的数据类型不匹配,就会报ORA-01722:invalid number错误。解决方法是在最后一个字段后加TERMINATED BY WHITESPACE,或者在INFILE指点的文件名之后加上 "str '\r\n'"
————————————————
https://blog.csdn.net/qq_2579...
在Windows NT上,如果未terminator_string指定no ,则SQL * Loader使用\n或\r\n作为记录终止符,这取决于它在数据文件中最先找到的那个。这意味着,如果您知道数据文件中的一个或多个记录已\n嵌入字段中,但是您想\r\n用作记录终止符,则必须指定它。
2.CTL文件类型匹配:
另外,在ctl文件中指定字段类型

CHAR字符型 INTEGER EXTERNAL整型 DECIMAL EXTERNAL浮点型 DATE 'YYYYMMDD'日期型

3.某些行含有空值处理
如果数据文件中的某些行含有空值,会导致这些行的数据无法导入,这时只要加上
trailing nullcols

即可,它表示如果读不到相应的值,就以NULL替代
2、Oracle + Spring Boot + Ebean 配置demo 3、Oracle遇到的问题 1.没有自增序列
oracle建立的表中,没用加自增主键,导致连接插入语句时,此字段没赋值而导致报错,提示缺失自增序列,且代码中没用映射自增序列的注解
问题描述:
javax.persistence.PersistenceException:Error getting sequence nextval
【Oracle总结】解决方案:
1)表中增加自增序列seq_name
create sequence seq_name increment by 1 start with 1 minvalue 1 nomaxvalue nocache; //注:seq_name为起的序列的名//创建触发器 create or repalce trigger "TR_seq_name" before insert on 用户名.表名 for each row begin if :new."ID" is null then select 用户名.序列名.nextval into :new."ID" from dual; end if; end; //注:ID为这个设置自增序列的列名

2)java数据库实体自增序列上增加注解
@Id @Column(name = "ID",nullable = false) @SequenceGenerator(name="seq_name",sequenceName="seq_name",allocationSize=1) @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "seq_name") long id;

2.error[ORA-00942:table or view does not exst\n]
插入数据的时候,出现error[ORA-00942:table or view does not exst\n],提示表名或者视图不存在
1)检查代码中@Table(name="table_name")映射的表名是否在数据库中存在
2)如果存在,可以打开sql日志,看插入的语句是否正确,是否插入的表名错误
logback.xml

3)检错所连接的数据库中该表是否存在。
3.缺少配置addJar()
javax.persistence.PersistenceException: The Type [XXXXX 数据库表实体类] is not registered entity?If you don't explicitly
list the entity classes to use Ebean will search for them in the classpath.If the entity is in a Jar check the ebean.search.jars property in ebean.properties file or check ServerConfig.addJar().
ServerConfig baseServerConfig = new ServerConfig(); ···· baseServerConfig.setJars(XXX); baseServerConfig.setPackages(XXX)

jars和packeges的可以配置在数据库配置中,从配置中进行读取

    推荐阅读