Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2 3   вперед  Ctrl      все
 Исправить таблицу документов PDF  [new]
Изерлонер
Member

Откуда: СФО
Сообщений: 1269
Здравствуйте.
Имеется таблица для хранения отсканированных в PDF документов с полями
iID int, objDoc image (знаю что лучше varbinary, но вот так сейчас есть).
В таблицу загоняются отсканированные документы посредством MS Access 2003 в OLE.
Плюс такого решения для меня был - минимум кода, и простота (я не специалист).
Кроме того в Access имеются контролы для работы с OLE, отображения документов, вывода их как в форме так и в родной программе.

Не знаю в чем причина, однако объем файлов PDF сохраненных в таблице таким образом существенно больше исходного. Сейчас в таблице около 1000 файлов, а ее "вес" более 7 ГБ. В принципе это не проблема, диск позволяет и много больше, проблема что работает все это хозяйство довольно медленно. Как сохранение файла, так и его вывод занимают заметное время. На маломощных компах-клиентах вообще все еле ползает.

Хотелось бы избавится от OLE, и хранить PDF непосредственно в базе. Но мало хранить, нужно так же иметь возможность работы с данными файлами в MS Access (отображение на форме (весьма желательно, но не обязательно) и вывод в "родной" программе Acrobat Reader по щелчку на соответствующем контроле в Access (обязательно).

Для этого, как я вижу, необходимо:
1. Сохранить все имеющиеся в базе документы PDF на жесткий диск, в качестве файла использовать ID + расширение (1.pdf, 2.pdf и т.д.) для того что бы сохранить эти ID за конкретными документами и перенести их в базу. т.е. Примеры сохранения отдельного файла на диск видел, но пока правда не применял. А как сохранить на диск все файлы разом?
2. Создать таблицу с полем image (или varbinary) ну и ID конечно.
3. Внести в новую таблицу документы с жесткого диска. Тут тот же вопрос что и в п.1. Как внести в новую таблицу все файлы?

Ну и 4. Возможно ли будет потом использовать полученную таблицу и выводить документы в формах Access и в программе типа Adobe Reader?

Спасибо.
21 май 14, 15:22    [16049401]     Ответить | Цитировать Сообщить модератору
 Re: Исправить таблицу документов PDF  [new]
Glory
Member

Откуда:
Сообщений: 104760
Изерлонер
Сейчас в таблице около 1000 файлов, а ее "вес" более 7 ГБ.

Дефрагметацию неверное никто не делал ?
А файлы наверное постоянно перезаписывались ?
21 май 14, 15:23    [16049412]     Ответить | Цитировать Сообщить модератору
 Re: Исправить таблицу документов PDF  [new]
Glory
Member

Откуда:
Сообщений: 104760
Изерлонер
1. Сохранить все имеющиеся в базе документы PDF на жесткий диск, в качестве файла использовать ID + расширение (1.pdf, 2.pdf и т.д.) для того что бы сохранить эти ID за конкретными документами и перенести их в базу. т.е. Примеры сохранения отдельного файла на диск видел, но пока правда не применял. А как сохранить на диск все файлы разом?

http://technet.microsoft.com/ru-ru/library/bb933993(v=sql.105).aspx
21 май 14, 15:27    [16049443]     Ответить | Цитировать Сообщить модератору
 Re: Исправить таблицу документов PDF  [new]
Изерлонер
Member

Откуда: СФО
Сообщений: 1269
Glory,

дефрагментацию чего? Базы? Даже и не задумывался о таком. А дефрагментацию жесткого диска делаю регулярно.
Файлы не перезаписываются, раз сохранил - там и остается. Используется не часто. Но объём вот такой :( Растет существенно с каждым вновь добавляемым файлом (впрочем замеры базы после добавления каждого конкретного файла не делал, периодически смотрю на объем... дико как-то воспринимается, когда на диске те же файлы занимают раз в десять меньше места).
21 май 14, 15:31    [16049487]     Ответить | Цитировать Сообщить модератору
 Re: Исправить таблицу документов PDF  [new]
Glory
Member

Откуда:
Сообщений: 104760
Изерлонер
дефрагментацию чего? Базы? Даже и не задумывался о таком

Таблиц/индексов в базе



Изерлонер
Файлы не перезаписываются, раз сохранил - там и остается. Используется не часто. Но объём вот такой :

Т.е. у вас эти 1000 файлов и в оригинале на дсике занимали 7 ГБ ?
21 май 14, 15:35    [16049537]     Ответить | Цитировать Сообщить модератору
 Re: Исправить таблицу документов PDF  [new]
dma_caviar
Member

Откуда: https://itproduct.ru
Сообщений: 2340
А что говорит DATALENGTH(objDoc) ?
Какой объем?
21 май 14, 15:42    [16049595]     Ответить | Цитировать Сообщить модератору
 Re: Исправить таблицу документов PDF  [new]
Изерлонер
Member

Откуда: СФО
Сообщений: 1269
Glory
Таблиц/индексов в базе


не делал. Никогда.

Glory
Т.е. у вас эти 1000 файлов и в оригинале на дсике занимали 7 ГБ ?

Нет. Конкретно смотреть конечно надо (не сейчас, это все на рабочем компе), но примерное соотношение как указал выше - отличие раз в десять.
21 май 14, 15:42    [16049597]     Ответить | Цитировать Сообщить модератору
 Re: Исправить таблицу документов PDF  [new]
Glory
Member

Откуда:
Сообщений: 104760
Изерлонер
отличие раз в десять.

А как вы пределили размер данных в таблице вообще и в конкретном поле ?
21 май 14, 15:45    [16049627]     Ответить | Цитировать Сообщить модератору
 Re: Исправить таблицу документов PDF  [new]
Изерлонер
Member

Откуда: СФО
Сообщений: 1269
Glory,

для данной таблицы создана отдельная база данных. База данных содержащая только эту таблицу. Делаю резрвную копию этой базы - объем резервной копии те самые 7 ГБ. ...наверное не совсем корректный метод измерения, но эту "базу" использую не часто и только для хранения документов (типа архива). Никаких операций над документами после добавления их в базу не производится (кроме вывода на экран). Не вижу с чего бы ей так расти. Да и пока ничего не добавляется она и не растет. Стоит добавить документ тут же при резервном копировании видно что файл резервной копии увеличился.
21 май 14, 15:53    [16049712]     Ответить | Цитировать Сообщить модератору
 Re: Исправить таблицу документов PDF  [new]
Изерлонер
Member

Откуда: СФО
Сообщений: 1269
dma_caviar
А что говорит DATALENGTH(objDoc) ?
Какой объем?


Подскажите пожалуйста как это использовать?
Умом понимаю что надо определить переменную (какого типа?) и присвоить ей значение этой функции. Но в справке такой функции не нашел.
21 май 14, 15:55    [16049736]     Ответить | Цитировать Сообщить модератору
 Re: Исправить таблицу документов PDF  [new]
Glory
Member

Откуда:
Сообщений: 104760
Изерлонер
Делаю резрвную копию этой базы - объем резервной копии те самые 7 ГБ. ...наверное не совсем корректный метод измерения,

Это совсем некорректный метод. Потому что вы считаете, что бэкап базы == таблица

Изерлонер
Стоит добавить документ тут же при резервном копировании видно что файл резервной копии увеличился.

Потому что к существующему в файле предылдущему бэкапу добавился новый ?
21 май 14, 15:56    [16049745]     Ответить | Цитировать Сообщить модератору
 Re: Исправить таблицу документов PDF  [new]
Изерлонер
Member

Откуда: СФО
Сообщений: 1269
Glory
Потому что к существующему в файле предылдущему бэкапу добавился новый ?

Нет конечно. Файл предыдущего бэкапа предварительно удаляю.
21 май 14, 16:00    [16049778]     Ответить | Цитировать Сообщить модератору
 Re: Исправить таблицу документов PDF  [new]
Изерлонер
Member

Откуда: СФО
Сообщений: 1269
Glory
Потому что вы считаете, что бэкап базы == таблица

Почему нет если в базе нет ничего кроме этой таблицы, а бэкап делается с нуля?
21 май 14, 16:01    [16049792]     Ответить | Цитировать Сообщить модератору
 Re: Исправить таблицу документов PDF  [new]
dma_caviar
Member

Откуда: https://itproduct.ru
Сообщений: 2340
Изерлонер
dma_caviar
А что говорит DATALENGTH(objDoc) ?
Какой объем?


Подскажите пожалуйста как это использовать?
Умом понимаю что надо определить переменную (какого типа?) и присвоить ей значение этой функции. Но в справке такой функции не нашел.


select DATALENGTH(objDoc)
from Таблица
21 май 14, 16:02    [16049797]     Ответить | Цитировать Сообщить модератору
 Re: Исправить таблицу документов PDF  [new]
Glory
Member

Откуда:
Сообщений: 104760
Изерлонер
Почему нет если в базе нет ничего кроме этой таблицы, а бэкап делается с нуля?

Потому что ваше незнание того, из чего состоит база, не поможет уменьшить размер бэкап до размера таблицы.
21 май 14, 16:05    [16049836]     Ответить | Цитировать Сообщить модератору
 Re: Исправить таблицу документов PDF  [new]
Изерлонер
Member

Откуда: СФО
Сообщений: 1269
dma_caviar,

выдает около 1100 значений. Каждое в среднем 6500000
21 май 14, 16:06    [16049858]     Ответить | Цитировать Сообщить модератору
 Re: Исправить таблицу документов PDF  [new]
Glory
Member

Откуда:
Сообщений: 104760
Изерлонер
выдает около 1100 значений. Каждое в среднем 6500000

select SUM(DATALENGTH(objDoc))/1024 as [Size_Kb]
from Таблица
21 май 14, 16:08    [16049875]     Ответить | Цитировать Сообщить модератору
 Re: Исправить таблицу документов PDF  [new]
dma_caviar
Member

Откуда: https://itproduct.ru
Сообщений: 2340
Изерлонер
dma_caviar,

выдает около 1100 значений. Каждое в среднем 6500000

А каждый файл сколько реально должен весить? Меньше 6500000 байт?
21 май 14, 16:10    [16049901]     Ответить | Цитировать Сообщить модератору
 Re: Исправить таблицу документов PDF  [new]
Изерлонер
Member

Откуда: СФО
Сообщений: 1269
Glory
select SUM(DATALENGTH(objDoc)/1024) as [Size_Kb]
from Таблица


Size_Kb
6517172

dma_caviar
А каждый файл сколько реально должен весить? Меньше 6500000 байт?


меньше значительно. Там отсканировано по 2-3 листочка в сером цвете 150-300 dpi. Под рукой сейчас такого файла нет, что бы точно сказать.
21 май 14, 16:21    [16050021]     Ответить | Цитировать Сообщить модератору
 Re: Исправить таблицу документов PDF  [new]
Glory
Member

Откуда:
Сообщений: 104760
Изерлонер
Size_Kb
6517172

Значит вы занесли в вашу таблицу именно столько данных
Почему вы занесли больше данных, чем размер файла, это вам решать
21 май 14, 16:25    [16050064]     Ответить | Цитировать Сообщить модератору
 Re: Исправить таблицу документов PDF  [new]
Изерлонер
Member

Откуда: СФО
Сообщений: 1269
Glory,

я правильно понимаю что сохранение в поле документа pdf, и сохранение в поле OLE контейнера содержащего этот документ pdf по объему занимаемых данных должны быть одинаковы (или отличаться не значительно)?
21 май 14, 16:30    [16050110]     Ответить | Цитировать Сообщить модератору
 Re: Исправить таблицу документов PDF  [new]
Изерлонер
Member

Откуда: СФО
Сообщений: 1269
Изерлонер
меньше значительно.

Нашел несколько соответствующих файлов - от 0,5 до 1,5 МБ.
21 май 14, 16:35    [16050143]     Ответить | Цитировать Сообщить модератору
 Re: Исправить таблицу документов PDF  [new]
Glory
Member

Откуда:
Сообщений: 104760
Изерлонер
я правильно понимаю что сохранение в поле документа pdf, и сохранение в поле OLE контейнера содержащего этот документ pdf по объему занимаемых данных должны быть одинаковы

Вот откуда вы опять это понимаете ?
Вы из размера бэкапа можете установить, чего и сколько ваш MS Access 2003 в OLE отправил на сервер ?

Вы вот заносили файл в таблицу серверной командой или утилитой ? Сравнивали после этого размер поля и файла ?

А выгружали значение из поля в файл ? Сравнивали размер полученного файла и поля ?
21 май 14, 16:38    [16050167]     Ответить | Цитировать Сообщить модератору
 Re: Исправить таблицу документов PDF  [new]
dma_caviar
Member

Откуда: https://itproduct.ru
Сообщений: 2340
Изерлонер,

Кстати, а у вас MSSQL Express?
21 май 14, 16:55    [16050325]     Ответить | Цитировать Сообщить модератору
 Re: Исправить таблицу документов PDF  [new]
Изерлонер
Member

Откуда: СФО
Сообщений: 1269
Glory
Вы из размера бэкапа можете установить, чего и сколько ваш MS Access 2003 в OLE отправил на сервер ?


не могу, я просто вижу "необоснованное" раздувание базы данных. И как раз таки и делаю вывод что тот же Access добавляет что-то лишнее. Цель этого топика и есть избавится от этого лишнего. Но без потери функционала.

Glory
Вы вот заносили файл в таблицу серверной командой или утилитой ? Сравнивали после этого размер поля и файла ?

Нет. Использую контрол акцесса "Присоединенная рамка объекта", там достаточно путь к файлу указать, вручную ничего не заносил. Поле не сравнивал, но уже из разговора выше видно отличие. Поле в среднем 6,5 МБ файл 0,5-1,5.

Glory
А выгружали значение из поля в файл ? Сравнивали размер полученного файла и поля ?

Не выгружал. Думаю файл будет меньше, и соответствовать исходному.
21 май 14, 16:55    [16050326]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2 3   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить