Oracle总结一、Oracle常用的sql命令1、查看建表语句selectdbms_metadata.get_ddl('TABLE','COMMUNITY')fromdual;表名COMMUNITY必须大写2.建表createtableTEST(idVARCHAR2(30),nameVARCHAR2(30),sexNUMBER(1),birthdayTIMESTAMP(6))3.insert三种插入语法:insertintotablenamevalues(value1,value2,...);insertintotablename(column1,column2,...)values(value1,value2,...);insertintotable2从表1中选择*;可用于批量插入insertintotest(id,name,sex)selectt.id,t.name,'0'fromtable_name_btgroupbyid;4.deleteDELETEFROMtablenameWHEREcolumnname=value5.updateUPDATEtablenameSETcolumnname=newValueWHEREcolumnname=somevalueupdatetestsetname='lucy'wherename='tom'//要更新的多列UPDATEtablenameSETcolumnname1=newvalue1,columnname2=newvalue2,columnname3=newvalue3WHEREcolumnname=somevalue6.select--查询指定列SELECTcolumnnameFROMtablename--查询所有列SELECT*FROMtablenameselect*fromtest7.dropdeletetablenamedroptable表名;8.alterALTERTABLE(表名)ADD(列名数据类型);ALTERTABLE(表名)MODIFY(列名数据类型);ALTERTABLE(表名)RENAMECOLUMN(当前列名)TO(新列名);/不需要括号ALTERTABLE(表名)DROPCOLUMN(列名);ALTERTABLE(当前表名)RENAMETO(新表名);2.将CSV数据导入Oraclecsv文件。一行数据中多个字段用逗号分隔1.切换oracle用户2.将csv文件和ctl文件放到当前oracle用户下的目录下(一般是/home/oracle)3.执行运行脚本sqlldrcontrol=\csvName.ctl4.输入用户名和密码5.等待插入完成6.可以删除ctl和csv文件7.在可视化工具loaddatainfile'csvName.csv'"str'中查看结果\r\n'"appendintotabletestfieldsterminatedby','OPTIONALLYENCLOSEDBY'"'AND'"'trailingnullcols(nameVARCHAR2(20))"str'\r\n'UseofsqlloaderimportwillappearORA-01722:invalidnumber问题;原因:因为数据文件是在windows下编辑的,有一个换行符,如果整型或者数字类型的字段位位于表的末尾,会出现一个CR/LF换行符结束,而用sqlldr导入时换行符也包含在最后一个字段中,这样对应导入的值就与数据库中定义的数据类型不匹配,会出现ORA-01722:invalidnumber错误被举报。解决办法是在最后一个字段后面加上TERMINATEDBYWHITESPACE,或者在INFILE指向的文件名后面加上"str'\r\n'"———————————————————https://blog.csdn.net/qq_2579...在WindowsNT以上,如果没有指定terminator_string,SQL*Loader使用\n或\r\n作为记录终止符,取决于它在数据文件。这意味着如果您知道一个或多个记录已嵌入字段中,但您希望将\r\n用作记录终止符,则必须指定它。2.CTL文件类型匹配:另外在ctl文件中指定字段类型CHAR,字符类型INTEGEREXTERNAL整型DECIMALEXTERNAL浮点型DATE'YYYYMMDD'日期类型包含空值的行会导致这些行的数据导入失败。这时候只要加上trailingnullcols,就是说如果读取不到对应的值,就用NULL代替。2.Oracle+SpringBoot+Ebean配置demo3,Oracle遇到的问题1.oracle创建的表没有自增序列,也没有使用自增主键,导致连接insert语句,这个字段未赋值报错,说明缺少自增序列,代码中没有使用映射自增增量序列注解问题描述:javax.persistence.PersistenceException:Errorgettingsequencenextval解决方法:1)添加自增序列seq_namecreatesequenceseq_nameincrementby1startwith1minvalue1nomaxvaluenocache;//注意:startwithseq_name序列的名称//createtriggercreateorrepalcetrigger"TR_seq_name"beforeinsertonusername.tablenameforeachrowbeginif:new."ID"isnullthenselectusername.sequencename.nextvalinto:new."ID"fromdual;endif;end;//注意:ID为自增的列名sequenceforthissetting2)给java数据库实体自增序列添加注解@Id@Column(name="ID",nullable=false)@SequenceGenerator(name="seq_name",sequenceName="seq_name",allocationSize=1)@GeneratedValue(strategy=GenerationType.SEQUENCE,generator="seq_name")longid;2.error[ORA-00942:tableorviewdoesnotexst\n]插入数据时出现error[ORA-00942:tableorviewdoesnotexst\n],提示表名或视图不存在不存在1)检查代码中@Table(name="table_name")映射的表名在数据库中是否存在2)如果存在,可以打开sql日志查看插入的语句是否正确,是否插入表名错误persistence.PersistenceException:类型[XXXXX数据库表实体类]不是注册实体?如果您没有明确列出要使用的实体类,Ebean将在类路径中搜索它们。如果实体在Jar中,检查ebean.properties文件中的ebean.search.jars属性或检查ServerConfig.addJar().ServerConfigbaseServerConfig=newServerConfig();····baseServerConfig.setJars(XXX);baseServerConfig.setPackages(XXX)jar和packeges可以在数据库配置中配置,从配置中读取
