Форум программистов, компьютерный форум, киберфорум
Наши страницы
Microsoft SQL Server
Войти
Регистрация
Восстановить пароль
 
Serega1990
8 / 8 / 4
Регистрация: 18.11.2012
Сообщений: 103
#1

Добавление множества файлов из директорий - вопрос оптимизации - SQL Server

27.07.2014, 14:17. Просмотров 278. Ответов 1
Метки нет (Все метки)

Товарищи помогите! Имеется 6000 папок в каждой лежит фото. Мучиться через INSERT добавлять каждую как то не очень. Может есть какой-нибудь способ более оригинальный. Да и еще можно через запрос также считать имя файла и поместить в отдельный столбец, так как у меня таблица состоит из [name], [face_image]? Заранее огромное спасибо!
http://www.cyberforum.ru/python/thread1268498.html
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.07.2014, 14:17
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Добавление множества файлов из директорий - вопрос оптимизации (SQL Server):

HttpWebResponse для получения размеров нескольких файлов - вопрос оптимизации
Всем доброго времени суток! У меня есть много файлов, и я хочу узнать их...

Добавление множества файлов в плейлист
Помогите пожалуйста дополнить этот код (добавление музыкального файла в...

Вопрос по оптимизации
Делаю игру...Там есть очень много вычислений синусов , косинусов (в таймере в...

Создание директорий и файлов
Directory.CreateDirectory("Main"); Ребят я создаю папку Main но как мне...

Отображение файлов и директорий
Подскажите , пожалуйста, почему ниже приведенный код не отображает файлы и...

1
Serega1990
8 / 8 / 4
Регистрация: 18.11.2012
Сообщений: 103
29.07.2014, 19:10  [ТС] #2
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

Не дождался ответа, ночь промучился и сделал! Для того, чтоб выполнять операции с использованием «xp_cmdshell» необходимо ее включить.
SQL
1
2
3
4
5
6
7
8
9
10
11
12
-- To allow advanced options to be changed.
EXEC sp_configure 'show advanced options', 1;
GO
-- To update the currently configured value for advanced options.
RECONFIGURE;
GO
-- To enable the feature.
EXEC sp_configure 'xp_cmdshell', 1;
GO
-- To update the currently configured value for this feature.
RECONFIGURE;
GO
и выполнить следующий запрос
T-SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
create table #tmp (x varchar(max))
create table #photos (id int identity(1,1) primary key
    , [Имя файла] varchar(2000)
    , [Имя] varchar(2000)
    , [Фото] varchar(2000)
    , [img] varbinary(max))
 
declare @cmd varchar(8000)
declare @path varchar(2000) = 'C:\lfw'
declare @p varchar(2000), @n varchar(2000), @f varchar(2000)
declare @query varchar(max)
set @cmd = 'forfiles /s /P "' + @path + '" /M *.jpg /C "cmd /c echo @relpath"'
 
insert into #tmp (x)
exec xp_cmdshell @cmd
 
delete from #tmp where x IS NULL
delete from #tmp where CHARINDEX('.\', x) = 0
--update #tmp set x=LEFT(x, LEN(x) - 1)
--update #tmp set x=REPLACE(REPLACE(x, '"', ''), '.\', '')
 
declare cur cursor for
    select
        [path]  + '\' + [name] + '\' + [file] [Полное имя файла]
        , [name] [Имя]
        , [file] [Фото]
    from
    (
        select 
            @path [path]
            , LEFT(x, CHARINDEX('\', x)-1) [name]
            , RIGHT(x, LEN(x) - CHARINDEX('\', x)) [file]
        from #tmp
    ) x
    order by 1
 
open cur
 
fetch next from cur into @p, @n, @f
if @@FETCH_STATUS <> 0
    print 'no files'
 
while @@FETCH_STATUS = 0 
begin
    set @query =
    'insert into #photos (
        [Имя файла]
        , [Имя]
        , [Фото]
        , [img])
    SELECT 
    ''' + @p +  '''
    , ''' + @n +  '''
    , ''' + @f +  '''
    , * FROM 
    OPENROWSET(BULK ''' + @p +  ''', SINGLE_BLOB) AS import'
    print @query
    print '--'
    exec(@query)
    
    fetch next from cur into @p, @n, @f
end
 
close cur
deallocate cur
 
select * from #photos
select * from #tmp
или
T-SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
declare @cmd varchar(2000)
declare @path varchar(2000) = 'C:/lfw'
 
set @cmd = 'forfiles /s /P "' + @path + '" /M *.jpg /C "cmd /c echo @relpath"'
 
 
create table #tmp (x varchar(max))
 
insert into #tmp (x)
exec xp_cmdshell @cmd
 
delete from #tmp where x IS NULL
delete from #tmp where CHARINDEX('.\', x) = 0
--update #tmp set x=SUBSTRING(x, 4, 2147483647)
--update #tmp set x=LEFT(x, LEN(x) - 1)
update #tmp set x=REPLACE(REPLACE(x, '"', ''), '.\', '')
 
select
    [path]  + '\' + [name] + '\' + [file] [Полное имя файла]
    , [name] [Имя]
    , [file] [Фото]
from
(
    select 
        @path [path]
        , LEFT(x, CHARINDEX('\', x)-1) [name]
        , RIGHT(x, LEN(x) - CHARINDEX('\', x)) [file]
    from #tmp
) x
order by 1
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.07.2014, 19:10
Привет! Вот еще темы с решениями:

Перебор файлов и директорий
Во общем решил попробовать написать антивирус (сканер) Так как си шарп изучаю...

Создание файлов и директорий
Каким способом можно создать новый файл и директорию? Набег на документацию...

Фильтр директорий и файлов
Нужен будет фильтр директорий, например чтобы в открываемом броузере...

Вопрос оптимизации программы
Программу сообрал, но как показывает практика, она после некоторой стабильной...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru