[SQLServer大对象]——FileTable从文件系统迁移文件
阅读导航
从文件系统中迁移文件到FileTable
批量加载文件到FileTable
如何批量加载文件到FileTable
通过博文[SQLServer大对象]——FileTable初体验,已经可以将文件加载到数据库中,并查看和访问这些文件。
将文件加载到 FileTable,可以使用工具xcopy或robocopy,也可以自己编写脚本(如PowerShell)或者应用程序,复制文件到FileTable中。
现在说一说文件的迁移。
从文件系统中迁移文件到FileTable
迁移文件条件
文件存储在文件系统中
在 SQL Server 中元数据的表包含一个指向文件的指针
执行前提
要将文件迁入到 FileTable,需要将每一个文件的原始UNC路径用FileTable的UNC路径代替。
现在我们假定现有 FileTable PhotoMetadata 包含图片数据,。这个表有一个varchar(512)类型的UNC路径列,其中包含执行.jpg文件的实际路径。
将.jpg及其目录结构一起复制到FileT的根目录下。
执行
使用代码修改 PhotoMetadata 的元数据:
1: -- 添加一个路径定位器到 PhotoMetadata。
2: ALTER TABLE PhotoMetadata ADD pathlocator hierarchyid;
3:
4: -- 获得在文件系统中图片的根路径。
5: DECLARE @UNCPathRoot varchar(100) = '\\RemoteShare\Photographs';
6:
7: -- 获得FileTable的根路径。
8: DECLARE @FileTableRoot varchar(1000);
9: SELECT @FileTableRoot = FileTableRootPath('dbo.PhotoTable');
10:
11: -- 更新PhotoMetadata。
12:
13: -- 使用 FileTable 路径代替文件系统 UNC 路径。
14: UPDATE PhotoMetadata
15: SET UNCPath = REPLACE(UNCPath, @UNCPathRoot, @FileTableRoot);
16:
17: -- 更新 FileTable 的 pathlocator 列。
18: UPDATE PhotoMetadata
19: SET pathlocator = GetPathLocator(UNCPath);
批量加载文件到FileTable
对于批量操作,FileTable和其他表基本一样,但是有些需要注意的地方。
FileTable有系统定义的约束,这些约束是为了确保文件的完整性和目录空间具有可维护性。这些约束验证数据批量加载到FileTable中。由于一些大量插入操作允许忽略表约束,所以接下来的是被强制要求的。
强制约束的批量加载操作可以像在任何其他表一样在 FileTable使用,具体操作如下:
bcp 带 CHECK_CONSTRAINTS 子句。
BULK INSERT 带 CHECK_CONSTRAINTS 子句。
INSERT INTO … SELECT * FROM OPENROWSET(BULK …) 不带 IGNORE_CONSTRAINTS 子句。
非强制约束的批量加载操作会失败,除非 FileTable 系统定义的约束已禁用,具体操作如下:
bcp 不带 CHECK_CONSTRAINTS 子句。
BULK INSERT 不带 CHECK_CONSTRAINTS 子句。
INSERT INTO … SELECT * FROM OPENROWSET(BULK …) 带 IGNORE_CONSTRAINTS 子句。
如何批量加载文件到FileTable
可以使用多种方法批量加载文件到FileTable:
bcp
使用 CHECK_CONSTRAINTS 子句。
禁用FileTable命名空间,并且不使用 CHECK_CONSTRAINTS 子句。然后重新启用FileTable命名空间。
BULK INSERT
使用 CHECK_CONSTRAINTS 子句。
禁用FileTable命名空间,并且不使用 CHECK_CONSTRAINTS 子句。然后重新启用FileTable命名空间
INSERT INTO … SELECT * FROM OPENROWSET(BULK …)
使用 CHECK_CONSTRAINTS 子句。
禁用FileTable命名空间,并且不使用 CHECK_CONSTRAINTS 子句。然后重新启用FileTable命名空间
[SQLServer大对象]——FileTable从文件系统迁移文件的更多相关文章
- [SQLServer大对象]——FileTable初体验 (转载)
阅读导航启用FILESTREAM设置更改FILESTRAM设置启用数据库非事务性访问级别FileTable 在我接触FileTable之前,存储文件都是存储文件的链接和扩展名到数据,其实并没有实际的把 ...
- [SQLServer大对象]——FileTable初体验
阅读导航 启用FILESTREAM设置 更改FILESTRAM设置 启用数据库非事务性访问级别 FileTable 在我接触FileTable之前,存储文件都是存储文件的链接和扩展名到数据,其实并没有 ...
- [原创]java WEB学习笔记81:Hibernate学习之路--- 对象关系映射文件(.hbm.xml):hibernate-mapping 节点,class节点,id节点(主键生成策略),property节点,在hibernate 中 java类型 与sql类型之间的对应关系,Java 时间和日期类型的映射,Java 大对象类型 的 映射 (了解),映射组成关系
本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...
- SharePoint 服务器端对象迁移文件夹
最近有个需求,写个定时迁移文件夹的小程序,因为计时器任务比较繁琐,所以选择了控制台程序.然后,用windows的计划任务执行,也许,会有广大朋友需要类似的功能,简单的分享一下代码逻辑,功能非常简单,希 ...
- 【Window OS】”对于目标文件系统,文件XXXXX过大“导致无法进行文件操作的解决方法
问题原因:这是目标文件系统不支持这么大的文件的操作问题.例如:目标文件系统的格式是FAT32,FAT32最大支持4G,如果你要进行发送或粘贴4G以上的文件就会出现这个问题. 解决办法:把目标文件系统的 ...
- MAT工具分析Dump文件(大对象定位)
前段时间线上服务经常发生卡顿,经过排查发现是大对象引起的Fullgc问题,特此记录排查逻辑. 目录 目的 一.获得服务进程 二.生成dump文件 三.下载mat工具 四.使用mat工具导入第二步生成的 ...
- XFS:大数据环境下Linux文件系统的未来?
XFS:大数据环境下Linux文件系统的未来? XFS开发者Dave Chinner近日声称,他认为更多的用户应当考虑XFS.XFS经常被认为是适合拥有海量数据的用户的文件系统,在空间分配方面的可 ...
- oracle对大对象类型操作:blob,clob,nclob
1.基本介绍 Oracle和plsql都支持lob(large object) 类型,用来存储大数量数据,如图像文件,声音文件等.Oracle 9i realse2支持存储最大为4g的数据,or ...
- 转://ASM与文件系统之间文件传输
熟悉数据库运维的程序猿都知道,数据的备份重于一切,随着业务的发展,数据量也会越来越大,有时候备份集会放在文件系统上面,有的备份集会放在asm存储上面,实现文件系统到文件系统之间的文件传输很简单,cp或 ...
随机推荐
- C语言语法 typedef小结
在总结typedef之前,先了解一个专业术语: 常量指针(const pointer):常量指针在定义的时候必须被初始化,而且一旦初始化完成,则它的值就不能再改变. int errNumb = 0; ...
- CSS3 波浪简单模拟--我是波浪,我有起伏,有大波与小波(坏笑中...)
我是波浪,我有起伏,我有大波与小波(坏笑中...) 最近改版网站,一般也不会去写动画,但是有些网站还是需要的,故拿出一个较简单的动画出来分享,很简单很简单. 原理简单阐述 其实很简单,使用一张美工做好 ...
- git客服端基本操作
以下操作基于git+gerrit 1.生成公钥 ssh -keygen -t rsa 默认公钥生成路径 C:\Documents and Settings\用户名\.ssh 2.配置姓名和邮箱地址 ...
- ExtJs服务器端代理(Ajax)
服务器端代理: Ajax:在当前域中发送请求 JsonP:跨域的请求 Rest:与服务器进行RESTful(GET/PUT/POST/DELETE)交互 Direct:使用 Ext.direct.M ...
- Daily Scrum Meeting ——ThirdDay(Beta)12.11
一.Daily Scrum Meeting照片 二.Burndown Chart 三.项目进展(check-in) 1.欢迎界面的优化,从模糊到清楚 2.新增主界面背景 3.新增注册背景 4.参与者侧 ...
- jQuery实战
1.获取标签在文档中的位置 var left = $('.selected').offset().left; var top = $('.selected').offset().top; 2.获取选中 ...
- 返水bug-备用
NOOK(N) CSBFB(25) off(Y) QQ(2652880032) G(1) off1(Y) QQ1(3479301404) G1(1) off2(Y) QQ2(309235846) G2 ...
- Python3使用urllib访问网页
介绍 改教程翻译自python官网的一篇文档. urllib.request是一个用于访问URL(统一资源定位符)的Python模块.它以urlopen函数的形式提供了一个非常简单的接口,可以访问使用 ...
- ue4 c++学习推荐
我由易到难推荐,不过在此之前还是先看看官方对于VS设置的推荐: https://docs.unrealengine.com/latest/INT/Programming/Development/Vis ...
- Code Lock[HDU3461]
Code LockTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/65536 K (Java/Others)Total Subm ...