Oracle使用总结
1. 在ORACLE中Service Name即为数据库名称;
2. 在做删除操作时,需要加Commit进行操作提交;
3. 使用sqlldr将数据进行批量导入到ORACLE中:
3.1 Sqlldr命令的用法:
sqlldr userid=LoginName/Password@TNSName control=C:\Users\xxx\Desktop\TestControl.ctl log=C:\Users\xxx\Desktop\load.log
3.2 测试tns是否可用: tnsping tnsname
3.3 控制文件
A、导入数据到Oracle中:
load data infile "C:\Users\xxx\LoadFile.data" badfile 'C:\Users\xxx\Output.bad' append into table TableName fields terminated by "," ( FieldA, FieldB, FieldC )
B、合并两列数据/导入固定值:
load data infile "C:\Users\xxx\LoadFile.csv" badfile 'C:\Users\xxx\Output.bad' append into table TableName fields terminated by "," OPTIONALLY ENCLOSED BY '"' ( FieldA, FieldB1 BOUNDFILLER, FieldB2 BOUNDFILLER, FieldB EXPRESSION ":FieldB1||:FieldB2", FieldC CONSTANT 'Constant Value' )
3.4 数据文件 Input.data
val11,val12,val13 val21,val22,val23 val31,val32,val33
3.5 错误处理
TNS:illegal ADDRESS parameters
解决办法:打开tnsname.org文件(如 D:\app\xxxxxx\product\11.2.0\client_1\network\admin),去掉TNS节点中所有的空格,使每个节点各成一行,即可解决该错误;
4. SELECT MOD(ColumName,10)BatchNum FROM TableName
自动生成生成[0,9]以内的批次号,该批次号不会改变,与以往我们使用的随机数不一样;
5. 在对ORACLE数据库进行UPDATE/INSERT/DELETE操作时,必须进行Commit操作,否则可能造成在不同的SQL Worksheet中查询后显示的结果不一致;
6. DECODE(列名, 值A, 返回值A,值B,返回值B,...)
可以实现在SQL SERVER类似Case..When的效果;
7. 几种常见的SQL:
A. 查询Schema及表名:
SELECT u.USERNAME SchName,t.TABLE_NAME TabName FROM sys.dba_users u LEFT JOIN sys.dba_tables t ON u.USERNAME=t.OWNER;
B. 查询表的分区:
SELECT * FROM ALL_TAB_PARTITIONS WHERE TABLE_NAME='TABLE NAME';
C. 表dual的用法:
SELECT 'Value 1' ValA,'Value 2' ValB,'Value 3' ValC,sysdate CREATEDDATE FROM dual;