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

Откуда:
Сообщений: 428
Перестал работать ежедневный импорт текстового файла в базу 2000. Файл состоит из tab-delimited столбцов, импортит его DTS, берет всего несколько полей, предварительно делая truncate таблицы. Подозревали плохие символы в исходном файле - искали, не нашли. Причем файлов таких много, DTS много, падает только один.

Я очень давно последний раз работал с MSSQL, многое забыл, многое не знал. Предлагается workaround - написать сркипт, который исходный файл переводит в большой скрипт, набор INSERT'ов

Вопрос. Как в MSSQL выполнить БОЛЬШОЙ скрипт ( >1Gb) , не пользуясь GUI ? Что-то вроде оракловского sqlplus. БД MSSQL 2000, все клиенты к ней - 2008, MS Access и другие приложения.

--
У мудрого человека нет врагов - только учителя
28 дек 11, 17:03    [11841050]     Ответить | Цитировать Сообщить модератору
 Re: Как выполнить большой SQL скрипт в MSSQL ?  [new]
gds
Member

Откуда: Железнодорожный
Сообщений: 1842
Блог
makondo,

sqlcmd
28 дек 11, 17:05    [11841083]     Ответить | Цитировать Сообщить модератору
 Re: Как выполнить большой SQL скрипт в MSSQL ?  [new]
gds
Member

Откуда: Железнодорожный
Сообщений: 1842
Блог
makondo
БД MSSQL 2000

osql и isql
c 2005 sqlcmd
28 дек 11, 17:06    [11841101]     Ответить | Цитировать Сообщить модератору
 Re: Как выполнить большой SQL скрипт в MSSQL ?  [new]
makondo
Member

Откуда:
Сообщений: 428
спасибо
28 дек 11, 17:14    [11841197]     Ответить | Цитировать Сообщить модератору
 Re: Как выполнить большой SQL скрипт в MSSQL ?  [new]
DeColo®es
Member

Откуда: Москва
Сообщений: 5503
Блог
Только работать это на 2000 будет в разы медленнее...
Я бы лучше ошибку поискал.
Начав с логов или чего там в DTS ведется.
28 дек 11, 18:39    [11841784]     Ответить | Цитировать Сообщить модератору
 Re: Как выполнить большой SQL скрипт в MSSQL ?  [new]
makondo
Member

Откуда:
Сообщений: 428
DeColo®es,

А как там логирование сделать? Там схема довольно простая : truncate table , потом сделать импорт из текстового файла такого-то в коннект такой-то , в стрелочке указана таблица и какие поля куда писать. Все.
28 дек 11, 18:56    [11841871]     Ответить | Цитировать Сообщить модератору
 Re: Как выполнить большой SQL скрипт в MSSQL ?  [new]
makondo
Member

Откуда:
Сообщений: 428
DeColo®es,

и насколько в разы ? импорт через DTS идет не больше часа. Сколько можно ожидать от скрипта с INSERTами ?
28 дек 11, 18:57    [11841881]     Ответить | Цитировать Сообщить модератору
 Re: Как выполнить большой SQL скрипт в MSSQL ?  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31984
makondo
DeColo®es,

и насколько в разы ? импорт через DTS идет не больше часа. Сколько можно ожидать от скрипта с INSERTами ?
несколько дней
28 дек 11, 19:26    [11842039]     Ответить | Цитировать Сообщить модератору
 Re: Как выполнить большой SQL скрипт в MSSQL ?  [new]
makondo
Member

Откуда:
Сообщений: 428
alexeyvg,

это не в несколько раз, это в несколько десятков раз.. )
28 дек 11, 20:06    [11842207]     Ответить | Цитировать Сообщить модератору
 Re: Как выполнить большой SQL скрипт в MSSQL ?  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31984
makondo
alexeyvg,

это не в несколько раз, это в несколько десятков раз.. )
да, может и так, балк инсёрт и обиносные инсёрты могут так отличаться
28 дек 11, 20:11    [11842238]     Ответить | Цитировать Сообщить модератору
 Re: Как выполнить большой SQL скрипт в MSSQL ?  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31984
alexeyvg
makondo
alexeyvg,

это не в несколько раз, это в несколько десятков раз.. )
да, может и так, балк инсёрт и обиносные инсёрты могут так отличаться
Правда, зависит от того, как написаны инсёрты, можно их раз в 5-10 ускорить, если делать батчи в транзакциях (подбирая правильный размер)
28 дек 11, 20:12    [11842243]     Ответить | Цитировать Сообщить модератору
 Re: Как выполнить большой SQL скрипт в MSSQL ?  [new]
makondo
Member

Откуда:
Сообщений: 428
alexeyvg,

эти INSERTы - не нужно после каждого ставить GO ?
28 дек 11, 20:30    [11842331]     Ответить | Цитировать Сообщить модератору
 Re: Как выполнить большой SQL скрипт в MSSQL ?  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31984
makondo
alexeyvg,

эти INSERTы - не нужно после каждого ставить GO ?
Лучьше ставить после группы инсёртов

GO разделяет скрипт на пакеты, которые приложение отправляет серверу. Если пакеты млишком маленькие, то вставка будет медленная из за множества мелких обращений к серверу, а если слишком большие, то серверу будет тяжело компилить и строить план выполнения.

Ну и о транзакциях не забывайте.

В общем, тут тоже можно в несколько раз вставку ускорить.

Хотя по сравнению с балком всё равно будет медленно. Ну пусть не сутки, пусть 10 часов...
28 дек 11, 21:04    [11842451]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить