SQL SELECT / XML convertor
От: Podbelsky  
Дата: 12.11.03 22:29
Оценка:
Здравствуйте.

У меня возникли следующие вопросы.

1. Выборку из базы, насколько я знаю, можно производить только посредством (грубо говоря):
SELECT <SomeStuff|*> FROM <KnownTableName> ...
Вопрос в следующем: есть ли способ посмотреть какие таблицы есть в базе (узнать как они называются), из которых данный пользователь может получать данные. Читал факи по SQL и пролистал в магазине книгу "SQL для чайников". Нигде подобный вопрос не освещается. Видимо, при обучении ставка делается на то, что вы сами админ подопытной базы и знаете, что и из какой таблицы можно взять.
Если более конкретно, то задача состоит в том, чтобы предоставить пользователю ASP скрипта наименование всех таблиц, имеющихся в базе с последующей возможностью формировать запросы. Соединение с базой производится так:
Set DB = Server.CreateObject("ADODB.Connection")
DB.Open "Provider=MSDAORA;user id=blah blah..."

2. Есть также необходимость сохранить информацию, запрошенную пользователем в какой-либо файл для последующего анализа. Объемы информации достаточно большие и могут достигать нескольких десятков гигабайт.
Решение, казалось бы очевидно, я использую метод Save объекта RecordSet с параметром adPersistXML.
Получаю на выходе файл, но слишком большой, чтобы с ним можно было работать.
Вопрос следующий: есть ли какие-либо конверторы полученных таким образом файлов в какой-нибудь более-менее приемлемый формат. Например, база MS Access (.mbd). Может ли Access оперировать такими большими объемами данных?
Пример: RS.Save ".\user_request_dump.xml" , adPersistXML
Все конверторы из XML в Excel/Access, что мне удалось найти жрут всю имеющуюся оперативную память и падают, либо прекращают работать, ничего не сконвертив.


Заранее огромное спасибо за любые ответы и советы.
Re: SQL SELECT / XML convertor
От: Xenia США  
Дата: 13.11.03 06:30
Оценка: 2 (1)
Здравствуйте, Podbelsky, Вы писали:

P>Здравствуйте.


P>У меня возникли следующие вопросы.


P>1. Выборку из базы, насколько я знаю, можно производить только посредством (грубо говоря):

P> SELECT <SomeStuff|*> FROM <KnownTableName> ...
P>Вопрос в следующем: есть ли способ посмотреть какие таблицы есть в базе (узнать как они называются), из которых данный пользователь может получать данные. Читал факи по SQL и пролистал в магазине книгу "SQL для чайников". Нигде подобный вопрос не освещается. Видимо, при обучении ставка делается на то, что вы сами админ подопытной базы и знаете, что и из какой таблицы можно взять.
P>Если более конкретно, то задача состоит в том, чтобы предоставить пользователю ASP скрипта наименование всех таблиц, имеющихся в базе с последующей возможностью формировать запросы. Соединение с базой производится так:
P>Set DB = Server.CreateObject("ADODB.Connection")
P>DB.Open "Provider=MSDAORA;user id=blah blah..."

Могу ответить на первую часть вопроса: метод OpenSchema. Из MSDN:

The OpenSchema method returns self-descriptive information about the data source, such as what tables are in the data source, the columns in the tables, and the data types supported.

Поищи по ключевому слову OpenSchema в msdn там много информации и примеров
Re: SQL SELECT / XML convertor
От: alexandrov_alex США  
Дата: 13.11.03 07:48
Оценка: 2 (1) +1
Здравствуйте, Podbelsky, Вы писали:

P> 2. Есть также необходимость сохранить информацию, запрошенную

P> пользователем в какой-либо файл для последующего анализа. Объемы
P> информации достаточно большие и могут достигать нескольких десятков
P> гигабайт. Решение, казалось бы очевидно, я использую метод Save объекта
P> RecordSet с параметром adPersistXML. Получаю на выходе файл, но слишком
P> большой, чтобы с ним можно было работать. Вопрос следующий: есть ли
P> какие-либо конверторы полученных таким образом файлов в какой-нибудь
P> более-менее приемлемый формат. Например, база MS Access (.mbd). Может ли
P> Access оперировать такими большими объемами данных? Пример: RS.Save
P> ".\user_request_dump.xml" , adPersistXML Все конверторы из XML в
P> Excel/Access, что мне удалось найти жрут всю имеющуюся оперативную
P> память и падают, либо прекращают работать, ничего не сконвертив.

У-у-у-у-у-у, да ты, братец, жулик! Что же это за запросы? В несколько десятков гигабайт. Здесь не поможет ни XML, ни mdb. Ибо XML это будет парсить долго, а максимальный размер базы Jet — 2Gb. Слушай, ты ведь на Oracle? Тебе, может, про transportable tablespaces почитать? Появились в восьмерке.

-- Всего хорошего!
-- Alex Alexandrov, e-mail: alex_alexandrov@fromru.com
Posted via RSDN NNTP Server 1.8 beta
It's kind of fun to do the impossible (Walt Disney)
Re[2]: SQL SELECT / XML convertor
От: Podbelsky  
Дата: 13.11.03 21:47
Оценка:
Здравствуйте, alexandrov_alex, Вы писали:

_>У-у-у-у-у-у, да ты, братец, жулик! Что же это за запросы? В несколько десятков гигабайт. Здесь не поможет ни XML, ни mdb. Ибо XML это будет парсить долго, а максимальный размер базы Jet — 2Gb. Слушай, ты ведь на Oracle? Тебе, может, про transportable tablespaces почитать? Появились в восьмерке.


На самом деле это запросы типа *, которые всю таблицу забирают. Так называемый дамп всей базы.
Вообще я в данной ситуации сам как пользователь, поэтому мне не очень важно на Oracle это все дело или нет. Про transportable tablespaces прочитаю обязательно, спасибо.
У меня есть дамп на 14гб в XML формате, который сгенерился при помощи метода Recordset.Save
Этот кусок нужно приспособить для анализа данных, то бишь чтения/поиска. Вот такая задача.
Отпарсить и сохранить в другой формат могу и сам, пишется не сложно. Вопрос в какой формат лучше этот XML переконвертить, ведь на данный момент в этих 14гб процентов 60-70 избыточной информации.
Excel не подходит сразу, там вроде в 1 лист можно только 2^16-1 строк записывать, плодить листы тоже не очень удобно.
Access судя по вашему ответу более подходящий вариант, 2гб — уже хорошо. Попробую.


_>-- Всего хорошего!

_>-- Alex Alexandrov, e-mail: alex_alexandrov@fromru.com
Re[2]: SQL SELECT / XML convertor
От: Podbelsky  
Дата: 13.11.03 22:10
Оценка:
Здравствуйте, Xenia, Вы писали:

X>Могу ответить на первую часть вопроса: метод OpenSchema. Из MSDN:


X>The OpenSchema method returns self-descriptive information about the data source, such as what tables are in the data source, the columns in the tables, and the data types supported.


X>Поищи по ключевому слову OpenSchema в msdn там много информации и примеров


Ага, благодарю. В platform SDK про OpenSchema тоже нашлось.

Еще откопал в книжке по ADO.NET такую вещь:
Dim db As SQLDMO.Database
Dim tbl As SQLDMO.Table
Dim col As SQLDMO.Column

Set db = SQLServer.Databases("DB_Name_here")

For Each tbl In db.Tables
Print "TABLE" & tbl.Name
For Each col In tbl.Columns
Print " : " & col.Name
Next
Next


Пока не пробовал ни первое, ни второе. Если интересно, про результаты сообщу.
Спасибо за ответ.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.