Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 ограничение типов mssql  [new]
MasterZ
Member

Откуда: Москва
Сообщений: 1145
Наступил на грабли...

EXEC @retVal = sp_OAMethod @oXML, 'xml', @xmlString OUTPUT

я видел многие наступали.

Главное в VB этот же xml файл - 15000 символов загружается на ура.
Что получается что VB круче, чем T-sql?


Пытался поколдовать с помощю записи и чтения в файл. там таже проблема varchar(max) = 4000 символов

В двух словах скажите как достать информацию из xml файла в котором 15000- 20000 символов?
14 авг 09, 15:33    [7540259]     Ответить | Цитировать Сообщить модератору
 Re: ограничение типов mssql  [new]
Glory
Member

Откуда:
Сообщений: 104760
MasterZ

В двух словах скажите как достать информацию из xml файла в котором 15000- 20000 символов?

Как всегда, прочитать сначала хелп - Examples of Bulk Importing and Exporting XML Documents
14 авг 09, 15:36    [7540291]     Ответить | Цитировать Сообщить модератору
 Re: ограничение типов mssql  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 36808
А что круче, молоток или микроскоп?

А как @xmlString объявлен, все должны догадаться?
14 авг 09, 15:38    [7540302]     Ответить | Цитировать Сообщить модератору
 Re: ограничение типов mssql  [new]
MasterZ
Member

Откуда: Москва
Сообщений: 1145
Гавриленко Сергей Алексеевич
А что круче, молоток или микроскоп?

А как @xmlString объявлен, все должны догадаться?


@xmlString varchar(max)
14 авг 09, 15:44    [7540357]     Ответить | Цитировать Сообщить модератору
 Re: ограничение типов mssql  [new]
MasterZ
Member

Откуда: Москва
Сообщений: 1145
Glory
MasterZ

В двух словах скажите как достать информацию из xml файла в котором 15000- 20000 символов?

Как всегда, прочитать сначала хелп - Examples of Bulk Importing and Exporting XML Documents


Это вообще не то.

У меня есть строковая информация в xml формате 15000 строк, полученая из интернета.

С помощью
EXEC @retVal = sp_OAMethod @oXML, 'xml', @xmlString OUTPUT

не читается.

Я сохранил эту информацию на диск в виде txt файла
Теперь не могу прочитать весь этот файл, т.к. в переменную varchar(max) читается только 4000 символов этого файла.
14 авг 09, 15:55    [7540452]     Ответить | Цитировать Сообщить модератору
 Re: ограничение типов mssql  [new]
ТАРАКАН
Member

Откуда:
Сообщений: 439
разбить файл на 4
14 авг 09, 15:57    [7540482]     Ответить | Цитировать Сообщить модератору
 Re: ограничение типов mssql  [new]
Glory
Member

Откуда:
Сообщений: 104760
MasterZ

Теперь не могу прочитать весь этот файл, т.к. в переменную varchar(max) читается только 4000 символов этого файла.

И причем тут MSSQL, если данные читает какой то метод вашего COM-а ?
Этот COM умеет правильно возвращать данные ?
14 авг 09, 15:59    [7540501]     Ответить | Цитировать Сообщить модератору
 Re: ограничение типов mssql  [new]
ТАРАКАН
Member

Откуда:
Сообщений: 439
ntext вместо varchar
14 авг 09, 16:02    [7540525]     Ответить | Цитировать Сообщить модератору
 Re: ограничение типов mssql  [new]
Ray D
Member

Откуда: from the middle of nowhere
Сообщений: 3598
Блог
Не надо ntext:
BOL

ntext, text, and image data types will be removed in a future version of Microsoft SQL Server. Avoid using these data types in new development work, and plan to modify applications that currently use them. Use nvarchar(max), varchar(max), and varbinary(max) instead


Сдается мне, проблема не в MS SQL.
14 авг 09, 16:21    [7540672]     Ответить | Цитировать Сообщить модератору
 Re: ограничение типов mssql  [new]
MasterZ
Member

Откуда: Москва
Сообщений: 1145
Glory
MasterZ

Теперь не могу прочитать весь этот файл, т.к. в переменную varchar(max) читается только 4000 символов этого файла.

И причем тут MSSQL, если данные читает какой то метод вашего COM-а ?
Этот COM умеет правильно возвращать данные ?


Ну, конечно метод, но в методе я же использую те же самые типы данных. И опять то же самое ограничение 4000 символов.

Поэтому и спрашиваю, как прочитать информацию.

Просил в двух словах, слов много, а воз и ныне там.

Нужно разбивать файл на части?
Может есть другой способ прочитать xml помимо sp_OAMethod @oXML, 'xml'?

Я понимаю, что отправить читать хелп проще всего, а вникнуть сложнее.
я же не прошу много слов всего два, только чтобы полезные были.
14 авг 09, 16:50    [7540878]     Ответить | Цитировать Сообщить модератору
 Re: ограничение типов mssql  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
да ,кстате а что за КОМ создаете то ?
-------------------------------------
Jedem Das Seine
14 авг 09, 16:50    [7540881]     Ответить | Цитировать Сообщить модератору
 Re: ограничение типов mssql  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
и за чем для загрузки хмл использовать самописный ком обьект то?
-------------------------------------
Jedem Das Seine
14 авг 09, 16:51    [7540889]     Ответить | Цитировать Сообщить модератору
 Re: ограничение типов mssql  [new]
Сергей Мишин
Member

Откуда:
Сообщений: 376
MasterZ
...
EXEC @retVal = sp_OAMethod @oXML, 'xml', @xmlString OUTPUT
...

если проблема получить большие данные возращаемые методом, то справка из БОЛ-а:
БОЛ

Если метод возвращает одиночное значение, следует либо указать локальную переменную для аргумента returnvalue, которая вернет возвращаемое значение метода, либо не указывать аргумент returnvalue, так что возвращаемое значение метода будет возвращено клиенту в виде результирующего набора с одной строкой и одним столбцом.

=> как вариант insert ... exec ...
14 авг 09, 17:00    [7540937]     Ответить | Цитировать Сообщить модератору
 Re: ограничение типов mssql  [new]
Glory
Member

Откуда:
Сообщений: 104760
MasterZ
Glory
MasterZ

Теперь не могу прочитать весь этот файл, т.к. в переменную varchar(max) читается только 4000 символов этого файла.

И причем тут MSSQL, если данные читает какой то метод вашего COM-а ?
Этот COM умеет правильно возвращать данные ?


Ну, конечно метод, но в методе я же использую те же самые типы данных. И опять то же самое ограничение 4000 символов.

Какие "эти" ? В крутом VB есть тип данных varchar(max) ?



MasterZ

Я понимаю, что отправить читать хелп проще всего, а вникнуть сложнее.
я же не прошу много слов всего два, только чтобы полезные были.

Ну конечно. Вы напридумали самый "правильный" метод импорта файлов и считаете, что у него маленькая проблемка, которую можно решить двумя словами без всяких там хелпов
14 авг 09, 17:03    [7540949]     Ответить | Цитировать Сообщить модератору
 Re: ограничение типов mssql  [new]
MasterZ
Member

Откуда: Москва
Сообщений: 1145
	@xmlString nvarchar(4000),
				@xmlBlob xml

		-------------------
			
			print @url	
	
			EXEC @retVal = sp_OACreate 'MSXML2.DOMDocument', @oXML OUTPUT
			EXEC @retVal = sp_OASetProperty @oXML, 'async', 0						
			EXEC @retVal = sp_OAMethod @oXML, 'load', @loadRetVal OUTPUT, @url	
			
			
			--для xml короче 4000 символов
			EXEC @retVal = sp_OAMethod @oXML, 'xml', @xmlString OUTPUT
			
			if (@xmlString is null) or @xmlString=''
			begin
				--для xml длинне 4000 символов
				print 'Создан файл'
				set @tmpfile= 'C:\xml\test.txt'			
				exec @retVal = sp_OAMethod @oXML, 'save', null, @tmpfile
				set @xmlBlob =  ( select * from OPENROWSET(BULK 'C:\xml\test.txt', SINGLE_BLOB)as rr )
				exec sp_xml_preparedocument  @h output, @xmlBlob
			end 
			else
				exec sp_xml_preparedocument  @h output, @xmlString
				
Вот так решил задачу через запись в файл.
Но мне интересно есть альтернатива sp_OAMethod?
17 авг 09, 12:05    [7545558]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить