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

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

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

Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
30.12.2005, 08:49
    #33465322
Aleksey-K
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
doc в SQL
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
30.12.2005, 19:50
    #33466359
фокс
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
doc в SQL
если есть наработки может кинете пример кода:

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

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

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

СНГ :)

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

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


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

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

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

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

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

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


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