|
|
|
doc в SQL
|
|||
|---|---|---|---|
|
#18+
разумно ли хранить документы word excel в MSSQL? и как их туда загрузить? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.12.2005, 19:32 |
|
||
|
doc в SQL
|
|||
|---|---|---|---|
|
#18+
Да, это можно и разумно.... Например так: http://www.caws.atnet.ru/vfox/sql7.html С уважением, Алексей ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.12.2005, 08:16 |
|
||
|
doc в SQL
|
|||
|---|---|---|---|
|
#18+
На MSSQL лучше для хранения документов и картинок использовать поле типа Image. А отправлять их туда в девятке лучше через Blob CREATE CURSOR file_excel(fe blob) APPEND BLANK APPEND MEMO fe FROM (pFileExcel) OVERWRITE sqlexec(nConnect, 'insert into BD.dbo.BDTable(poleImage) values(?file_excel.fe)') ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.12.2005, 11:40 |
|
||
|
doc в SQL
|
|||
|---|---|---|---|
|
#18+
И получать с сервера тоже через Blob: Local cFile, cSql cFile='c:\DocFile.xls' CURSORSETPROP("MapBinary",.T.,0) cSQL = 'select fe from BD.dbo.BDTable Where ....' SQLExec(nConnect,cSQL, 'DocXLS') IF RECCOUNT('DocXLS')>0 IF FILE(cFile) DELETE FILE cFile ENDIF COPY MEMO fe TO (cFile) ENDIF ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.12.2005, 11:55 |
|
||
|
doc в SQL
|
|||
|---|---|---|---|
|
#18+
FoxLamerНа MSSQL лучше для хранения документов и картинок использовать поле типа Image. А отправлять их туда в девятке лучше через Blob Скажите пожалуйста, FoxLamer, а при работе через BLOB и Image (по сравнению с memo и Text соответственно) решена проблема "глотания" ODBC драйвером некоторых последовательностей символов (x0A + что-то) ? С хранением EXE- файлов я это не наблюдал, а вот при сохранении WODR-документов случалось. С уважением, Алексей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.12.2005, 12:02 |
|
||
|
doc в SQL
|
|||
|---|---|---|---|
|
#18+
Я это наблюдал при хранении файлов картинок примерно > 1000К. При использовании Image и Blob у меня этот эффект не проявлялся, хотя файлы изображений до 30Mb. Документы у меня хранятся в основном Вордовские. И тоже этот эффект пока не проявлялся. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.12.2005, 12:09 |
|
||
|
doc в SQL
|
|||
|---|---|---|---|
|
#18+
Hi Aleksey! Судя по всему этого как раз и не должно происходить для blob/image - для того он и предназначен. А вот для text/memo как раз должно происходить - поскольку текст преобразуется учитывая всякие там collation и прочее... Не предназначен text для хранения бинарной информации... Posted via ActualForum NNTP Server 1.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.12.2005, 00:40 |
|
||
|
doc в SQL
|
|||
|---|---|---|---|
|
#18+
Igor Korolyov Hi Aleksey! Судя по всему этого как раз и не должно происходить для blob/image - для того он и предназначен. А вот для text/memo как раз должно происходить - поскольку текст преобразуется учитывая всякие там collation и прочее... Не предназначен text для хранения бинарной информации... Posted via ActualForum NNTP Server 1.3 Нет.. Это не так. Код: plaintext 1. 2. 3. 4. 5. Я насчет работы через blob/image я проверю. Гже-то у меня валяется Word - файл, который искажается при записи на сервер. С уважением, Алексей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.12.2005, 08:49 |
|
||
|
doc в SQL
|
|||
|---|---|---|---|
|
#18+
если есть наработки может кинете пример кода: положить файл достать показать 30.12.05 думать некогда, суета, С НАСТУПАЮЩИМ! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.12.2005, 19:50 |
|
||
|
doc в SQL
|
|||
|---|---|---|---|
|
#18+
FoxLamerНа MSSQL лучше для хранения документов и картинок использовать поле типа Image. А отправлять их туда в девятке лучше через Blob CREATE CURSOR file_excel(fe blob) APPEND BLANK APPEND MEMO fe FROM (pFileExcel) OVERWRITE sqlexec(nConnect, 'insert into BD.dbo.BDTable(poleImage) values(?file_excel.fe)') почему-то у меня команда APPEND MEMO fe FROM (pFileExcel) OVERWRITE не срабатывает точнее она у меня выглядит так APPEND MEMO rasp.doc FROM (c:\pr.xls) OVERWRITE дает ошибку: The file specified does not exist. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.12.2005, 20:59 |
|
||
|
doc в SQL
|
|||
|---|---|---|---|
|
#18+
Hi Aleksey! Э, не! Ты не путай фоксовый memo (который ко всему прочему ещё и атрибут NOCPTRAN имеет - как раз для того чтобы заложенные в него бинарные данные извлекались без перекодирования) и серверным Text - там совсем другие правила работают... В лучшем случае наверное можно только закодировав в BASE64 избежать ненужных конвертаций/искажений для бинарных файлов. А так - пользуй Image... Кстати интересный факт - в SQL2005 эти типы переименованы - и теперь они по названию стали varchar/nvarchar и varbinary - просто в качестве размерности ставится ключевое слово max... СНГ :) Posted via ActualForum NNTP Server 1.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.01.2006, 19:48 |
|
||
|
doc в SQL
|
|||
|---|---|---|---|
|
#18+
Igor Korolyov Hi Aleksey! Э, не! Ты не путай фоксовый memo (который ко всему прочему ещё и атрибут NOCPTRAN имеет - как раз для того чтобы заложенные в него бинарные данные извлекались без перекодирования) и серверным Text - там совсем другие правила работают... Ну и какие там интересно правила работают на сервере по отношению к полям типа Text ? В сравнении с полями типа Image ? Igor Korolyov В лучшем случае наверное можно только закодировав в BASE64 избежать ненужных конвертаций/искажений для бинарных файлов... А каким образом это сделать ? И не вырастит ли объем файла в два раза как минимум ? С уважением, Алексей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.01.2006, 08:16 |
|
||
|
doc в SQL
|
|||
|---|---|---|---|
|
#18+
Hi Aleksey! > Ну и какие там интересно правила работают на сервере по отношению к полям > типа Text ? В сравнении с полями типа Image ? В MSDN весьма расплывчато про это говорится (хотя и упомянуто про bit patterns). Впрочем ты же сам говорил про проблемы "с некоторыми последовательностями символов" На разных платформах в частности разные понятия про "перевод строки" - и если сервер ИНТЕРПРЕТИРУЕТ поле как текстовое, то без сомнения он может например для одних клиентов "перевод строки" считать как CRLF (это кстати только в Win стандарт такой! он не кроссплатформенный), для других же проcто как LF - и соответственно при записи со стороны Win клиента и чтении со стороны Unix будет "пропадание" байта, а при обратном направлении наоборот - образуется "лишний" байт... Уверен что это далеко не все конвертации которые претерпевает ТЕКСТ. =========Beginning of the citation============== Each text and ntext data value has a collation. Collations define attributes such as comparison rules and sensitivity to case or accenting. The collations for text values also specify a code page, which defines the bit patterns used to represent each character. Each ntext value uses the Unicode code page, which is the same for all the collations. Each database has a default collation. When a text or ntext column is created, it is assigned the default collation of the database unless you assign a specific collation using the COLLATE clause. When two text or ntext values having different collations are combined or compared, collation precedence rules determine which collation is used for the operation. Data in an image data is stored as a string of bits and is not interpreted by SQL Server. Any interpretation of the data in an image column must be made by the application. For example, an application could store data in an image column using a BMP, TIFF, GIF, or JPEG format. The application that reads the data from the image column must recognize the format of the data and display it correctly. All an image column does is provide a location to store the stream of bits that make up the image data value. =========The end of the citation================ >> В лучшем случае наверное можно только закодировав в >> BASE64 избежать ненужных конвертаций/искажений для бинарных файлов... > А каким образом это сделать ? Со стороны клиента вестимо. И это уж от используемого клиента зависит :) В Фоксе это STRCONV() > И не вырастит ли объем файла в два раза как минимум ? Вырастет, но не в 2, а лишь на треть - пропорция 8/6 - т.е. 1 некодированный байт это 1.(3) кодированных байта - ну и плюс к тому по стандарту должно быть "выравнивание" (padding) на границу 4-х символов, хотя не всегда это соблюдается :( Posted via ActualForum NNTP Server 1.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.01.2006, 15:18 |
|
||
|
doc в SQL
|
|||
|---|---|---|---|
|
#18+
2Aleksey-K Еще раз поднимаю тему, т.к. я был неправ(( В поле Image тоже портятся файлы размером > ~22Mb(а не 30 как я утверждал) Причем, этот же эффект я наблюдаю и на MSSQL2005 как в поле image, так и в поле varbinary(max) Видимо дело в драйвере ODBC. Как побороть проблему? Вот пример испорченного файла jpg. Размер 23Mb. Снизу смазан... Почему такое происходит? Может кто-нибудь знает? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.01.2006, 14:32 |
|
||
|
doc в SQL
|
|||
|---|---|---|---|
|
#18+
Вот черт! А я уже перевел код под поля Image :( Ну ладно. Зато мне показалось, что Image<>BLOB работает быстрее, чем Text<->MEMO. А что портит, это да... Я тоже это проверил. ODBC "хавает" коды типа 0A с какой-то комбинацией других байт. Придется преобразовывать все в чистый тест с помощью STRCONV() С уважением, Алексей ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.01.2006, 15:05 |
|
||
|
doc в SQL
|
|||
|---|---|---|---|
|
#18+
Можно так: STRCONV(FILETOSTR("FileName.jpg"), 13) и затем в MEMO (BLOB) поле и на сервер. С уважением, Алексей ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.01.2006, 15:09 |
|
||
|
doc в SQL
|
|||
|---|---|---|---|
|
#18+
авторМожно так: STRCONV(FILETOSTR("FileName.jpg"), 13) и затем в MEMO (BLOB) поле и на сервер. Спасибо, попробую... А image все равно лучше, чем text, т.к. при загрузке в text портятся файлы гораздо меньшего размера... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.01.2006, 15:59 |
|
||
|
doc в SQL
|
|||
|---|---|---|---|
|
#18+
да здесь вообще другой глюк возник... открыт курсор с полем blob в котором файл ворда, делаю: a="c:\docum."+tip COPY MEMO rasp.doc TO a оно через раз, то делает файл, то нет... какая-то полная фигня... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.01.2006, 10:17 |
|
||
|
doc в SQL
|
|||
|---|---|---|---|
|
#18+
2фокс Попробуйте так: local m.a, m.tip m.tip='doc' m.a="c:\docum."+m.tip COPY MEMO rasp.doc TO (m.a) 2Aleksey-K Спасибо, все заработало. Теперь прогоняю через STRCONV() все файлы >20Mб Только задержка возросла, т.к. STRCONV() работает с таким файлом ~4-5 c Но это для меня не критично) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.01.2006, 10:46 |
|
||
|
doc в SQL
|
|||
|---|---|---|---|
|
#18+
FoxLamerAleksey-K Спасибо, все заработало. Теперь прогоняю через STRCONV() все файлы >20Mб Только задержка возросла, т.к. STRCONV() работает с таким файлом ~4-5 c Но это для меня не критично) НЕМА ЗА ШО :) Теперь мне осталось тоже самое сделать :) Я правда храню в Text полях только EXE - файлы, но все равно надо перекодировать. Мало ли что . С уважением, Алексей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.01.2006, 11:04 |
|
||
|
doc в SQL
|
|||
|---|---|---|---|
|
#18+
не понятно, а если я храню файлы ворда, их что - тоже перекодировать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.01.2006, 11:51 |
|
||
|
doc в SQL
|
|||
|---|---|---|---|
|
#18+
2фокс Я храню сейчас файлы размером>20Мб, предварительно "прогнав" их через strconv(). Остальные - как обычно. Все файлы в поле image, а на SQL2005-в varbinary(max) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.01.2006, 12:24 |
|
||
|
doc в SQL
|
|||
|---|---|---|---|
|
#18+
FoxLamer2фокс Попробуйте так: local m.a, m.tip m.tip='doc' m.a="c:\docum."+m.tip COPY MEMO rasp.doc TO (m.a) 2Aleksey-K Спасибо, все заработало. Теперь прогоняю через STRCONV() все файлы >20Mб Только задержка возросла, т.к. STRCONV() работает с таким файлом ~4-5 c Но это для меня не критично) И все-таки это ГЛЮК!!! Глюк в 9-ке, перепробовал все, помогло только: COPY MEMO rasp.doc TO "c:\DOCUM."+tip т.е. прямое указание имени файла, через переменную НЕ РАБОТАЕТ!!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.01.2006, 15:17 |
|
||
|
|

start [/forum/topic.php?fid=41&msg=33491286&tid=1592535]: |
0ms |
get settings: |
7ms |
get forum list: |
10ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
162ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
60ms |
get tp. blocked users: |
1ms |
| others: | 226ms |
| total: | 479ms |

| 0 / 0 |
