Google地图是如何用Oracle进行图片的存储的


Google地图是基于Oracle查询的,那么,Google是如何把地图存储到Oracle里面的呢?

这里我们借助dbms_lob包来简单了解一下流程。

1)创建一个t表:

  1. 00:32:04 hr@ORCL (^ω^) create table t (a varchar2(20),b blob);  
  2.   
  3. 表已创建。  

2)写一个存储过程:

  1. CREATE OR REPLACE PROCEDURE think   (p_1 VARCHAR2,     p_2 VARCHAR2    , p_3  varchar2  )   
  2. AS  
  3.   v_f BFILE;  
  4.   v_b blob;  
  5. BEGIN  
  6.   INSERT INTO t  values(  p_1,     EMPTY_BLOB ()    )   RETURN  b    into v_b;  
  7.     
  8.     
  9.     v_f := BFILENAME (p_2,p_3);  
  10.    DBMS_LOB.FILEOPEN  (v_f, DBMS_LOB.FILE_READONLY);  
  11.    DBMS_LOB.LOADFROMFILE (v_b, v_f,   DBMS_LOB.GETLENGTH (v_f));  
  12.    DBMS_LOB.FILECLOSE (v_f);  
  13.    commit;  
  14.    end;  

此处记得检查一下我们的过程是否有误:select * from user_errors

3)sys用户创建directory对象并授权:

  1. 00:44:12 sys@ORCL (^ω^) create directory dir as 'C:\Users\Administrator\';  
  2.   
  3. 目录已创建。  
  4.   
  5. 00:45:21 sys@ORCL (^ω^) grant all on directory dir to hr;  

4)执行存储过程

  1. begin  
  2.   think( 'This is my pic 1''DIR''psu.jpg'   );  
  3. end;  

5)查询(基于pl/sql查询)

select * from t  

查询效果如下:

Google地图是如何用Oracle进行图片的存储的

当然了,Google不可能用pl/sql来展现它的图片。可能是java开发的app,也可能是其他。

相关内容