以前,我要求如何在FileTable不使用File I / OAPI的情况下在其中创建目录。现在,我想为我刚刚创建的父目录创建一个子目录。在插入期间如何分配我的父母?似乎parent_path_locator
是一个计算列。
这创建了我的父母…
INSERT INTO FileTable0 (name,is_directory,is_archive) VALUES ('Directory', 1, 0);
如何在FileTable中为此父级创建子目录?
这是我最终用来创建子目录的原因,因为它不会为我GetPathLocator()
生成新path_locator
值-它只会解释现有值hierarchyids
。
DECLARE @parentdir table(path hierarchyid not null);
DECLARE @subdir_locator hierarchyid
-- Create Parent Directory, OUTPUT inserted parent path
INSERT INTO FileTable0 (name,is_directory,is_archive)
OUTPUT INSERTED.path_locator into @parentdir
SELECT 'Directory', 1, 0
-- Create new path_locator based upon parent
SELECT @subdir_locator = dbo.GetNewPathLocator(path) from @parentdir
-- Create Subdirectory
INSERT INTO FileTable0 (name,path_locator,is_directory,is_archive)
VALUES ('subdirectory', @subdir_locator, 1, 0);
上面的代码块利用了在此发现的默认path_locator值,该值hierarchyid
从GUID构建了一个新的表示形式(
使用newid()
方法和简单解析)。该函数GetNewPathLocator()
在SQL
Server中我找不到的任何地方都不存在(这
hierarchyid.GetDescendant()
是_我能找到 _的最接近 的函数 ,但是它没有使用FileTable依赖的本机结构
)。也许在SQL.NEXT …
CREATE FUNCTION dbo.GetNewPathLocator (@parent hierarchyid = null) RETURNS varchar(max) AS
BEGIN
DECLARE @result varchar(max), @newid uniqueidentifier -- declare new path locator, newid placeholder
SELECT @newid = new_id FROM dbo.getNewID; -- retrieve new GUID
SELECT @result = ISNULL(@parent.ToString(), '/') + -- append parent if present, otherwise assume root
convert(varchar(20), convert(bigint, substring(convert(binary(16), @newid), 1, 6))) + '.' +
convert(varchar(20), convert(bigint, substring(convert(binary(16), @newid), 7, 6))) + '.' +
convert(varchar(20), convert(bigint, substring(convert(binary(16), @newid), 13, 4))) + '/'
RETURN @result -- return new path locator
END
GO
该函数GetNewPathLocator()
还需要一个SQL视图,getNewID
以请求newid()
使用此SO帖子中的技巧。
create view dbo.getNewID as select newid() as new_id
要调用GetNewPathLocator()
,您可以使用默认参数,该参数将生成一个新的hierarchyid
或传入现有的hiearchyid
字符串表示形式(
.ToString()
)来创建一个子项hierarchyid
,如下所示…
SELECT dbo.GetNewPathLocator(DEFAULT); -- returns /260114589149012.132219338860058.565765146/
SELECT dbo.GetNewPathLocator('/260114589149012.132219338860058.565765146/'); -- returns /260114589149012.132219338860058.565765146/141008901849245.92649220230059.752793580/
问题内容: 有没有一种方法可以在不使用文件I / O API的情况下在FileTable中创建目录?它与创建语句一样简单吗? 这是我第一次使用SQL Server 2012,对中from的限制并不熟悉。 问题答案: 以下对我有用。希望这可以帮助其他人。
介绍 create-umi umi 通过 create-umi 提供脚手架能力,包含: project,通用项目脚手架,支持选择是否启用 TypeScript,以及 umi-plugin-react 包含的功能 ant-design-pro,仅包含 ant-design-pro 布局的脚手架,具体页面可通过 umi block 添加 block,区块脚手架 plugin,插件脚手架 library
问题内容: 我正在创建一个简单的程序,尝试从磁盘中读取“ conf / conf.xml”,但是如果此文件或目录不存在,则会创建它们。 我可以使用以下代码执行此操作: 我的问题是,这是否真的是最优雅的方式?需要创建两个简单的路径以在新的子目录中创建新文件似乎多余。 问题答案: 您可以将声明为,而不是。然后,您可以使用,请参见下面的示例: 或者,按原样使用代码,您可以使用:
问题内容: 我正在尝试在每天创建目录的目录中创建日志,但是fileHandler没有创建目录,而是其抛出异常 无法获取C:\ dir_date \ Logging.txt的锁 (此处dir_date不存在,我正在尝试创建登录到该目录)。我可以通过“ fileHandler”创建目录吗? log4J甚至可以创建目录(如果不存在),这是否可以通过fileHandler进行? 问题答案: julFile
1.6. 使用grunt创建项目 grunt是基于任务的构建工具,和make,rake,ant,cake,maven,gradle等是一样的 1.6.1. 前置条件 前置条件需要有nodejs和npm,请确保已安装成功: npm install -g grunt npm install -g grunt-init git clone https://github.com/gruntjs/grunt
您好,我想用java创建目录和子目录。我的目录结构是从当前应用程序目录开始的,意思是在当前项目目录中,如下所示。。。 我知道如何创建目录,但我需要创建子目录,我用下面的代码尝试了,下一步应该做什么?