当前位置: 首页 > Linux, Oracle, oracle 10g, oracle 11g > 正文

将远程共享文件夹挂载到linux本地目录

今天客户提个新需求,负责扫描的公司提交的数据是存放在Windows虚拟机里,而虚拟机用的磁盘,物理主机无法直接挂载,这样扫描公司提交的图片就需要拷贝到本地磁盘上,一是数据量巨大,第一期需要进数据库的图片就10多T,需要很长的时间来拷贝,二是拷贝会生成落地图片,就需要进行MD5校验,这需要更多的时间,客户提的需求是,在不生成落地文件的情况下将图片加载到数据库,对于这种需求,我首先想到2种方法,一种是在虚拟机上安装ORACLE客户端,SQLLDR将虚拟机上的图片加载到远程数据库,这种方法由于Windows虚拟机不能给登录权限,并且这批数据只能开放读权限而被否定,第二种方法就是将Windows虚拟机上扫描公司提交的图片以共享文件夹的形式提交给我们,然后将Windows的共享文件夹挂载到本地(linux服务器)的目录,也就是相当于将Windows共享的文件夹映射到linux服务器的目录下。
先测试下第一种方法,创建测试表T_LOAD_2M_SF:

SQL> create table t_load_2m_sf (id number, full_name varchar2(100),
2  create_date date, contents blob, constraint pk_t_load_1m_sf
3  primary key(id)) lob (contents) store as securefile;

创建SQLLDR的控制文件sqlldr_2M_sf.ctl,如下:

LOAD DATA
INFILE 'test.txt'
INTO TABLE T_LOAD_2M_SF
TRUNCATE
FIELDS TERMINATED BY ','
(ID CHAR(255),
FULL_NAME CHAR(255),
CREATE_DATE SYSDATE,
CONTENTS LOBFILE(FULL_NAME) TERMINATED BY EOF)

创建SQLLDR的数据文件test.txt:

[oracle@dbserver1 sqlldr]$ vi test.txt
1,/home/oracle/sqlldr/02-01-006-000001/02-01-006-000001-0021-6.jpg
2,/home/oracle/sqlldr/02-01-006-000001/02-01-006-000001-0039-6.jpg
3,/home/oracle/sqlldr/02-01-006-000001/02-01-006-000001-0021-7.jpg
4,/home/oracle/sqlldr/02-01-006-000001/02-01-006-000001-0039-7.jpg
5,/home/oracle/sqlldr/02-01-006-000001/02-01-006-000001-0021-8.jpg
6,/home/oracle/sqlldr/02-01-006-000001/02-01-006-000001-0039-8.jpg
7,/home/oracle/sqlldr/02-01-006-000001/02-01-006-000001-0021-9.jpg
8,/home/oracle/sqlldr/02-01-006-000001/02-01-006-000001-0039-9.jpg

执行加载测试:

[oracle@dbserver1 sqlldr]$ sqlldr test/test@192.168.20.105/fhacdb
control=sqlldr_2M_sf.ctl
SQL*Loader: Release 11.2.0.2.0 - Production on Thu Feb 23 11:55:02
Copyright (c) 1982, 2009,Oracle and/or its affiliates.rights reserved.
Commit point reached - logical record count 7
Commit point reached - logical record count 8

登录数据库验证:

SQL> select * from T_LOAD_2M_SF;
ID  FULL_NAME                CREATE_DATE  CONTENTS
--  -----------------------  -----------  ---------------------------
 1  /home/oracle/sqlldr/02-  23-2-12      FFD8FFE14365457869660000494
    01-006-000001/02-01-006-              92A000800000009000F010200060
    000001-0021-6.jpg                     000007A000000100102000E00000
                                          0800000001201030001000000010
                                          000801A01050001000000A000000
                                          01B01050001000000A800
......

在测试下第二种方法,首先需要将Windows服务器(192.168.50.21)上的共享文件夹(02-01-006-000001)挂载到linux服务器的/mnt目录上,也就相当于将Windows服务器上的共享文件夹映射到linux服务器的/mnt目录下,操作如下:

[root@fhacdb ~]# mount -t cifs -o username=1,password=1 //192.168.50.21/02-01-006-000001 /mnt

进入到/mnt目录下,查看是否可以看到Windows共享文件夹的内容。

[root@fhacdb ~]# cd /mnt/
[root@fhacdb mnt]# ls
02-01-006-000001-0001-10.jpg      02-01-006-000001-0001-2.jpg
02-01-006-000001-0001-5.jpg       02-01-006-000001-0001-8.jpg
02-01-006-000001-0001-3.jpg       02-01-006-000001-0001-6.jpg
02-01-006-000001-0001-9.jpg       02-01-006-000001-0001-1.jpg
02-01-006-000001-0001-4.jpg       02-01-006-000001-0001-7.jpg

修改SQLLDR的数据文件为以下内容。

[oracle@dbserver1 sqlldr]$ vi test.txt
1,/mnt/02-01-006-000001-0001-1.jpg
2,/mnt/02-01-006-000001-0001-2.jpg
3,/mnt/02-01-006-000001-0001-3.jpg
4,/mnt/02-01-006-000001-0001-4.jpg
5,/mnt/02-01-006-000001-0001-5.jpg
6,/mnt/02-01-006-000001-0001-6.jpg
7,/mnt/02-01-006-000001-0001-7.jpg
8,/mnt/02-01-006-000001-0001-8.jpg

进行加载测试。

[oracle@dbserver1 sqlldr]$ sqlldr test/test control=sqlldr_2M_sf.ctl
SQL*Loader: Release 11.2.0.2.0-Production on Thu Feb 23 12:05:35 2012
Copyright (c) 1982, 2009,Oracle and/or its affiliates.rights reserved.
Commit point reached - logical record count 7
Commit point reached - logical record count 8

登录数据库查看是否加载成功。

SQL> select * from T_LOAD_2M_SF;
ID  FULL_NAME               CREATE_DATE CONTENTS
--  ----------------------- ----------- ---------------------------
 1  /mnt/02-01-006-000001-0 23-2-12     FFD8FFE143654578696600004949
    001-1.jpg                           0000800000001201030001000000
                                        010000801A01050001000000A000
                                        2A000800000009000F0102000600
                                        00007A000000100102000E000000
                                        1B01050001000000A800
......

经过测试和客户协商后,客户认为第二种方法可行,目前客户正在与负责网络和硬件的人员协商文件夹共享的问题,等文件共享后,就可以加载第一批数据入库。

本文固定链接: http://www.dbdream.com.cn/2012/02/%e5%b0%86%e8%bf%9c%e7%a8%8b%e5%85%b1%e4%ba%ab%e6%96%87%e4%bb%b6%e5%a4%b9%e6%8c%82%e8%bd%bd%e5%88%b0linux%e6%9c%ac%e5%9c%b0%e7%9b%ae%e5%bd%95/ | 信春哥,系统稳,闭眼上线不回滚!

该日志由 dbdream 于2012年02月23日发表在 Linux, Oracle, oracle 10g, oracle 11g 分类下, 你可以发表评论,并在保留原文地址及作者的情况下引用到你的网站或博客。
原创文章转载请注明: 将远程共享文件夹挂载到linux本地目录 | 信春哥,系统稳,闭眼上线不回滚!
关键字: , , ,

将远程共享文件夹挂载到linux本地目录:等您坐沙发呢!

发表评论

快捷键:Ctrl+Enter