Добро пожаловать в форум, Guest >> Войти | Регистрация | Поиск | Правила | | В избранное | Подписаться | ||
Все форумы / Microsoft SQL Server |
![]() ![]() |
Chernikovkn Member Откуда: Сообщений: 7 |
Добрый день, помогите/подскажите пожалуйста: Как запросом в mssql создавать файловые папки с названием на основе строки из определённого поля таблицы |
24 дек 18, 13:40 [21772017] Ответить | Цитировать Сообщить модератору |
Владислав Колосов Member Откуда: Сообщений: 8485 |
Chernikovkn, для создания папок используют средства операционной системы, а не SQL Server. |
24 дек 18, 18:13 [21772351] Ответить | Цитировать Сообщить модератору |
WarAnt Member Откуда: Питер Сообщений: 2423 |
Chernikovkn, xp_cmdshell 'md c:\ttt' |
24 дек 18, 18:16 [21772354] Ответить | Цитировать Сообщить модератору |
Chernikovkn Member Откуда: Сообщений: 7 |
Владислав Колосов, это понятно, но как быть если нужно создать их 1000 единиц, с именами как в таблице sql? поэтому и возник сей вопрос |
25 дек 18, 07:35 [21772645] Ответить | Цитировать Сообщить модератору |
Chernikovkn Member Откуда: Сообщений: 7 |
WarAnt, это предполагает задание имени папки руками, мне же нужно чтобы запрос считывал данные из определенного поля и на основание данных каждой строки создавал папку |
25 дек 18, 07:37 [21772647] Ответить | Цитировать Сообщить модератору |
PizzaPizza Member Откуда: Сообщений: 422 |
Это вам надо один раз создать или периодически по 1000 папок создавать? Если один раз, то делаете экспорт имён папок из базы и формируете bat/bash файл создающий вот это все. Если периодически, то это очень интересная задача. |
||
25 дек 18, 08:04 [21772654] Ответить | Цитировать Сообщить модератору |
Chernikovkn Member Откуда: Сообщений: 7 |
PizzaPizza, Создать нужно разово - это первоочередная задача, но потом по мере обновления/добавления информации соответственно добавлять папки |
25 дек 18, 08:08 [21772655] Ответить | Цитировать Сообщить модератору |
alexeyvg Member Откуда: Moscow Сообщений: 31817 |
|
||
25 дек 18, 08:25 [21772657] Ответить | Цитировать Сообщить модератору |
Chernikovkn Member Откуда: Сообщений: 7 |
alexeyvg, вот это и вызывает у меня трудность слишком мало опыта, но хочется разобраться |
25 дек 18, 08:41 [21772659] Ответить | Цитировать Сообщить модератору |
uaggster Member Откуда: Сообщений: 972 |
Chernikovkn, есть 2 способа, правильный и неправильный. Точнее - 1 правильный, и куча вариантов неправильного. Правильный: Создайте filetable. Это, нормальным образом доступно начиная с 2012+ сервера. В пределах filetable можно создавать папки обычным insert в эту самую filetable. Соответственно, созданные папки будут доступны в виртуальном сетевом каталоге. Неправильный: declare @s nvarchar(max) declare @folders table (folder nvarchar(255)) insert into @folders Values(N'folder1'), (N'folder2'), (N'folder2') Set @s = ( Select N'xp_cmdshell ''md c:\' + a.folder + N''';' from @folders a For xml path (N''), type ).value(N'.', N'nvarchar(max)') exec (@s) Ну, разумеется, @folders - может быть какой то реальной таблицей. |
25 дек 18, 09:48 [21772682] Ответить | Цитировать Сообщить модератору |
Chernikovkn Member Откуда: Сообщений: 7 |
uaggster, Спасибо за помощь, буду пробовать с помощью filetable я уже создал структуру папок, но этот метод не поддерживает создание этих папок гдето (в сети в моем случае), кроме как локально, а ставить на файловый сервер sql-сервер не хотелось бы |
25 дек 18, 10:13 [21772703] Ответить | Цитировать Сообщить модератору |
Владислав Колосов Member Откуда: Сообщений: 8485 |
Chernikovkn, напишите приложение, не мучайте сервер. |
25 дек 18, 12:13 [21772816] Ответить | Цитировать Сообщить модератору |
Chernikovkn Member Откуда: Сообщений: 7 |
PizzaPizza, Я правильно понял Вашу мысль? Извлекаю запросом из таблицы нужное поле предположим в test.txt, делаю батник с содержанием: @<«test.txt» (for /f «delims=» %%i in (‘more’) do @md «%%~i») подкладываю их соответственно туда где необходимо создать эту кучу папок и запускаю .bat |
25 дек 18, 12:25 [21772831] Ответить | Цитировать Сообщить модератору |
PizzaPizza Member Откуда: Сообщений: 422 |
Chernikovkn, Красиво конечно. Как одноразовый проект я бы сделал тупее Select 'md c:\path\' + dirname from t Вставил бы результат в текстовый файл и переименовал его в bat. |
25 дек 18, 20:52 [21773342] Ответить | Цитировать Сообщить модератору |
Владислав Колосов Member Откуда: Сообщений: 8485 |
Chernikovkn, полно же средств в винде - VBS, JS, Pоwer Shell. |
26 дек 18, 12:44 [21773753] Ответить | Цитировать Сообщить модератору |
Все форумы / Microsoft SQL Server | ![]() |