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

Откуда:
Сообщений: 44
Использовать можно любую версию ms sql.
Есть xml в котором описывается некоторая структура ХД.
<?xml version="1.0" encoding="UTF-8"?>
<Model>
	<References >
                <Reference >
			<Table>sysusers</Table>
		</Reference>
                <Reference >
			<Table>dbusers</Table>
		</Reference>
        </References>
        <TS>
               <t>
                        <table>t1</table>
              </t>
        </TS>
</Model>


Таких объектов тысячи в xml, некий парсер разбирает этот xml и создает таблицы в БД, которые имею простую структуру
3 колонки:
id(unique, not null, int)
code(varchar)
note(varchar)

Теперь вопрос.
Как создать скрипт, который беря из xml значение внутри <table> и для него( это значение будет именем создаваемой таблицы ) создаст в этой таблице индекс по колонке code.


Для всех значений <table> нужно что-то вроде
exec CREATE INDEX sysusers
  sysusers ON (code); 
25 сен 12, 19:54    [13221338]     Ответить | Цитировать Сообщить модератору
 Re: Поломать голову  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74930
Не проше ли будет создать потом индекс по полю code для тех таблиц, для которых его еще нет?!
25 сен 12, 20:07    [13221382]     Ответить | Цитировать Сообщить модератору
 Re: Поломать голову  [new]
sinnah
Member

Откуда:
Сообщений: 44
pkarklin
Не проше ли будет создать потом индекс по полю code для тех таблиц, для которых его еще нет?!

Спасибо. Вы гений!!! Но тогда следующий вопрос . Как вставлять в таблицу значения внутри тегов xml?
25 сен 12, 20:10    [13221390]     Ответить | Цитировать Сообщить модератору
 Re: Поломать голову  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31969
sinnah
Теперь вопрос.
Как создать скрипт, который беря из xml значение внутри <table> и для него( это значение будет именем создаваемой таблицы ) создаст в этой таблице индекс по колонке code.
А какой конкретно вопрос, что у вас не получилось?

Вам нужно поправить тот парсер, который "разбирает этот xml и создает таблицы в БД", или написать новый, только для создания индексов

1. читаете файл
2. разбираете структуру XML
3. цикл по таблицам
4. в цикле проверяете наличие индекса и создаёте, если нет.

Или действительно везде создайте индекс, как pkarklin сказал.
25 сен 12, 20:13    [13221395]     Ответить | Цитировать Сообщить модератору
 Re: Поломать голову  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31969
sinnah
Как вставлять в таблицу значения внутри тегов xml?
А что значит эта фраза???
В таблицах нет тегов xml, как туда вставить значения?
25 сен 12, 20:14    [13221398]     Ответить | Цитировать Сообщить модератору
 Re: Поломать голову  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74930
sinnah
Как вставлять в таблицу значения внутри тегов xml?


Не совсем понял вопрос. Вы не знаете как вставить, или как распарсить?
25 сен 12, 20:18    [13221416]     Ответить | Цитировать Сообщить модератору
 Re: Поломать голову  [new]
sinnah
Member

Откуда:
Сообщений: 44
Я думал что средствами ms sql можно загрузить данные в виде огромного xml'a и потом из них извлекать данные, но похоже, что это невозможно.
26 сен 12, 10:58    [13223570]     Ответить | Цитировать Сообщить модератору
 Re: Поломать голову  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31969
sinnah
Я думал что средствами ms sql можно загрузить данные в виде огромного xml'a и потом из них извлекать данные, но похоже, что это невозможно.
Возможно, хотя обычно так не делают.

И "огромный xml" не получится, только до 2-х гигабайт.
26 сен 12, 11:03    [13223617]     Ответить | Цитировать Сообщить модератору
 Re: Поломать голову  [new]
Mnior
Member

Откуда: Кишинёв
Сообщений: 6724
sinnah
Я думал что средствами ms sql можно загрузить данные в виде огромного xml'a и потом из них извлекать данные, но похоже, что это невозможно.
А накуя?

Загружаем данные XML в таблицу через XmlBulkLoad, любого размера, очень быстро и эффективно, а далее делаем с таблой всё что угодно.

Если вы думаете что если есть тип XML то можно делать всё что угодно?
Неа, это только для не целевого использования.
26 сен 12, 11:54    [13224094]     Ответить | Цитировать Сообщить модератору
 Re: Поломать голову  [new]
Mnior
Member

Откуда: Кишинёв
Сообщений: 6724
Mnior
Если вы думаете что если есть тип XML то можно делать всё что угодно?
Не, делать можно, никто не запрещает, но обычно гланды вырезают не через анальное отверстие.
26 сен 12, 11:56    [13224108]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить