powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / doc в SQL
25 сообщений из 33, страница 1 из 2
doc в SQL
    #33463016
фокс
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
разумно ли хранить документы word excel в MSSQL? и как их туда загрузить?
...
Рейтинг: 0 / 0
doc в SQL
    #33463290
фокс
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
UP
...
Рейтинг: 0 / 0
doc в SQL
    #33463368
Фотография Aleksey-K
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, это можно и разумно....
Например так: http://www.caws.atnet.ru/vfox/sql7.html
С уважением, Алексей
...
Рейтинг: 0 / 0
doc в SQL
    #33463835
Фотография 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)')
...
Рейтинг: 0 / 0
doc в SQL
    #33463882
Фотография FoxLamer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И получать с сервера тоже через 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
...
Рейтинг: 0 / 0
doc в SQL
    #33463900
Фотография Aleksey-K
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FoxLamerНа MSSQL лучше для хранения документов и картинок использовать поле типа Image.
А отправлять их туда в девятке лучше через Blob

Скажите пожалуйста, FoxLamer, а при работе через BLOB и Image (по сравнению с memo и Text соответственно) решена проблема "глотания" ODBC драйвером некоторых последовательностей символов (x0A + что-то) ? С хранением EXE- файлов я это не наблюдал, а вот при сохранении WODR-документов случалось.
С уважением, Алексей.
...
Рейтинг: 0 / 0
doc в SQL
    #33463931
Фотография FoxLamer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я это наблюдал при хранении файлов картинок примерно > 1000К. При использовании Image и Blob у меня этот эффект не проявлялся, хотя файлы изображений до 30Mb. Документы у меня хранятся в основном Вордовские. И тоже этот эффект пока не проявлялся.
...
Рейтинг: 0 / 0
doc в SQL
    #33465179
Igor Korolyov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hi Aleksey!

Судя по всему этого как раз и не должно происходить для blob/image - для
того он и предназначен. А вот для text/memo как раз должно происходить -
поскольку текст преобразуется учитывая всякие там collation и прочее... Не
предназначен text для хранения бинарной информации...

Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
doc в SQL
    #33465322
Фотография Aleksey-K
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Igor Korolyov
Hi Aleksey!

Судя по всему этого как раз и не должно происходить для blob/image - для
того он и предназначен. А вот для text/memo как раз должно происходить -
поскольку текст преобразуется учитывая всякие там collation и прочее... Не
предназначен text для хранения бинарной информации...

Posted via ActualForum NNTP Server 1.3
Нет.. Это не так.
Код: plaintext
1.
2.
3.
4.
5.
APPEND MEMO MemoFieldName FROM FileName[OVERWRITE] [AS nCodePage]
...
...
AS nCodePage
...
If you omit the AS nCodePage clause or specify  0  for nCodePage, no code page conversion occurs for the text file.
Т.е. если я не указал nCodePage, то конвертации не происходит.
Я насчет работы через blob/image я проверю. Гже-то у меня валяется Word - файл, который искажается при записи на сервер.
С уважением, Алексей.
...
Рейтинг: 0 / 0
doc в SQL
    #33466359
фокс
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
если есть наработки может кинете пример кода:

положить файл
достать
показать

30.12.05
думать некогда, суета, С НАСТУПАЮЩИМ!
...
Рейтинг: 0 / 0
doc в SQL
    #33466384
фокс
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
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.
...
Рейтинг: 0 / 0
doc в SQL
    #33466833
Igor Korolyov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hi Aleksey!

Э, не! Ты не путай фоксовый memo (который ко всему прочему ещё и атрибут
NOCPTRAN имеет - как раз для того чтобы заложенные в него бинарные данные
извлекались без перекодирования) и серверным Text - там совсем другие
правила работают... В лучшем случае наверное можно только закодировав в
BASE64 избежать ненужных конвертаций/искажений для бинарных файлов. А так -
пользуй Image...
Кстати интересный факт - в SQL2005 эти типы переименованы - и теперь они по
названию стали varchar/nvarchar и varbinary - просто в качестве размерности
ставится ключевое слово max...

СНГ :)

Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
doc в SQL
    #33468685
Фотография Aleksey-K
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Igor Korolyov
Hi Aleksey!

Э, не! Ты не путай фоксовый memo (который ко всему прочему ещё и атрибут
NOCPTRAN имеет - как раз для того чтобы заложенные в него бинарные данные
извлекались без перекодирования) и серверным Text - там совсем другие
правила работают...
Ну и какие там интересно правила работают на сервере по отношению к полям типа Text ? В сравнении с полями типа Image ?


Igor Korolyov
В лучшем случае наверное можно только закодировав в
BASE64 избежать ненужных конвертаций/искажений для бинарных файлов...
А каким образом это сделать ? И не вырастит ли объем файла в два раза как минимум ?
С уважением, Алексей.
...
Рейтинг: 0 / 0
doc в SQL
    #33471228
Igor Korolyov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
...
Рейтинг: 0 / 0
doc в SQL
    #33489531
Фотография FoxLamer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2Aleksey-K
Еще раз поднимаю тему, т.к. я был неправ((
В поле Image тоже портятся файлы размером > ~22Mb(а не 30 как я утверждал)
Причем, этот же эффект я наблюдаю и на MSSQL2005 как в поле image, так и в поле varbinary(max)
Видимо дело в драйвере ODBC.
Как побороть проблему?

Вот пример испорченного файла jpg.
Размер 23Mb.
Снизу смазан...
Почему такое происходит? Может кто-нибудь знает?
...
Рейтинг: 0 / 0
doc в SQL
    #33489621
Фотография Aleksey-K
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот черт!
А я уже перевел код под поля Image :(
Ну ладно. Зато мне показалось, что Image<>BLOB работает быстрее, чем Text<->MEMO.
А что портит, это да... Я тоже это проверил. ODBC "хавает" коды типа 0A с какой-то комбинацией других байт. Придется преобразовывать все в чистый тест с помощью STRCONV()
С уважением, Алексей
...
Рейтинг: 0 / 0
doc в SQL
    #33489633
Фотография Aleksey-K
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно так:
STRCONV(FILETOSTR("FileName.jpg"), 13)
и затем в MEMO (BLOB) поле и на сервер.

С уважением, Алексей
...
Рейтинг: 0 / 0
doc в SQL
    #33489762
Фотография FoxLamer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторМожно так:
STRCONV(FILETOSTR("FileName.jpg"), 13)
и затем в MEMO (BLOB) поле и на сервер.

Спасибо, попробую...
А image все равно лучше, чем text, т.к. при загрузке в text портятся файлы гораздо меньшего размера...
...
Рейтинг: 0 / 0
doc в SQL
    #33490924
фокс
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
да здесь вообще другой глюк возник...
открыт курсор с полем blob в котором файл ворда, делаю:
a="c:\docum."+tip
COPY MEMO rasp.doc TO a

оно через раз, то делает файл, то нет...

какая-то полная фигня...
...
Рейтинг: 0 / 0
doc в SQL
    #33491045
Фотография FoxLamer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Но это для меня не критично)
...
Рейтинг: 0 / 0
doc в SQL
    #33491107
Фотография Aleksey-K
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FoxLamerAleksey-K
Спасибо, все заработало.
Теперь прогоняю через STRCONV() все файлы >20Mб
Только задержка возросла, т.к. STRCONV() работает с таким файлом ~4-5 c
Но это для меня не критично)
НЕМА ЗА ШО :)
Теперь мне осталось тоже самое сделать :)
Я правда храню в Text полях только EXE - файлы, но все равно надо перекодировать. Мало ли что .
С уважением, Алексей.
...
Рейтинг: 0 / 0
doc в SQL
    #33491286
фокс
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
не понятно, а если я храню файлы ворда, их что - тоже перекодировать?
...
Рейтинг: 0 / 0
doc в SQL
    #33491408
Фотография FoxLamer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2фокс
Я храню сейчас файлы размером>20Мб, предварительно "прогнав" их через strconv(). Остальные - как обычно.
Все файлы в поле image, а на SQL2005-в varbinary(max)
...
Рейтинг: 0 / 0
doc в SQL
    #33492121
фокс
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
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
т.е. прямое указание имени файла, через переменную НЕ РАБОТАЕТ!!!
...
Рейтинг: 0 / 0
doc в SQL
    #33492125
фокс
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
...
Рейтинг: 0 / 0
25 сообщений из 33, страница 1 из 2
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / doc в SQL
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]