将远程共享文件夹挂载到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
......
经过测试和客户协商后,客户认为第二种方法可行,目前客户正在与负责网络和硬件的人员协商文件夹共享的问题,等文件共享后,就可以加载第一批数据入库。
建议继续学习:
- Centos挂载新硬盘开机自动挂载 (阅读:7719)
- 从磁盘映像中挂载或提取指定的 LVM 逻辑卷 (阅读:3876)
- linux磁盘管理学习笔记(下):linux分区、挂载 (阅读:3088)
- 从磁盘映像中挂载或提取指定分区 (阅读:2836)
- 不可靠的EXP远程备份 (阅读:2776)
- 代理的远程部分 (阅读:2586)
- linux 挂载光驱 (阅读:2404)
- linux下挂载U盘过程 (阅读:2237)
- Linux内核文件系统挂载分析 (阅读:1938)
- msnshell远程代码执行漏洞 (阅读:1727)
扫一扫订阅我的微信号:IT技术博客大学习
- 作者:streamsong 来源: 信春哥,系统稳,闭眼上线不回滚
- 标签: 共享文件 挂载 远程
- 发布时间:2012-05-15 23:42:34
- [55] IOS安全–浅谈关于IOS加固的几种方法
- [55] Oracle MTS模式下 进程地址与会话信
- [54] 如何拿下简短的域名
- [53] android 开发入门
- [52] Go Reflect 性能
- [51] 图书馆的世界纪录
- [49] 读书笔记-壹百度:百度十年千倍的29条法则
- [47] 【社会化设计】自我(self)部分――欢迎区
- [38] 程序员技术练级攻略
- [33] 视觉调整-设计师 vs. 逻辑