MS SQL data export/import

User avatar
IA72
Уже с Приветом
Posts: 956
Joined: 04 Mar 2002 10:01

Post by IA72 »

Sabina wrote:Спасибо IA72 за совет по поводу SQL tools (который я почему-то поздно заметила :oops: ). Мне вообще-то нужен скрипт, который можно будет потом вставить в скрипты для QA. Чтобы когда мы меняем db schema, их данные не пропадали. Этот тул генерирует код, который потом можно слямзить?
Cабина


Да
SkyWalker
Уже с Приветом
Posts: 317
Joined: 16 Feb 2001 10:01
Location: US

Post by SkyWalker »

По умолчанию только пользователь с административными привилегиями может выполнять подобные запросы. В SQL Server Agent properties на закладке Job System Вы найдете раздел Non-SysAdmin job step Proxy Account.

Ошибка, которую Вы указали выше обычно означает что у Вас либо SQL Agent не может определить Proxy Account из-за недостатка прав, либо, если стоит опция по умолчанию, нужно использовать только пользователя с административными правами.
User avatar
Sabina
Уже с Приветом
Posts: 5669
Joined: 13 Oct 2000 09:01
Location: East Bay, CA

Post by Sabina »

[deleted]
User avatar
Sabina
Уже с Приветом
Posts: 5669
Joined: 13 Oct 2000 09:01
Location: East Bay, CA

Post by Sabina »

Всем большое спасибо, все скрипты написала.
А с эккаунтом, stupid me was trying to use SQL server account instead of NT one. :roll:

Cабина
User avatar
Sabina
Уже с Приветом
Posts: 5669
Joined: 13 Oct 2000 09:01
Location: East Bay, CA

Post by Sabina »

Sabina wrote:Всем большое спасибо, все скрипты написала.


Ну вот старалась-старалась и все псу под хвост :х
Написанные скрипты для DTs забраковали по причине того, что нужно создавать DTS для каждой customer DB, даже если их структура идентична. А им хочется универсальный скрипт, чтобы имя базы там было переменной.

А bcp у меня не распознает schema changes, ну или по крайней мере я не знаю как ее это заставить сделать. То есть если вставить новую колонку bcp на импорте ругается.

Кто-нибудь наверняка делал подобное, подскажите как тут быть, плиз.

Сабина
User avatar
Dmitry67
Уже с Приветом
Posts: 28294
Joined: 29 Aug 2000 09:01
Location: SPB --> Gloucester, MA, US --> SPB --> Paris

Post by Dmitry67 »

Не обязательно вроде
DTS можно параметризировать. Но я сам это решил не использовать
Мне было легче вынести сложные вещи по подготовке .txt файлов к загрузке в Perl, вызываемый xp_cmdshell

Я так и не понял
Речь идет об экспорте, так ? Из разных баз причем структура их может отличаться ?
А на сколько сильно отличаться ?

Может малой кровью и не обойтись
Универсальный способ - писать чтото что вызывается xp_cmdshell, коннектится к базе и само пишет файл. Я такие вещи писал на Perl. Пишутся в несколько строчек.
Зарегистрированный нацпредатель, удостоверение N 19719876044787 от 22.09.2014
User avatar
f_evgeny
Уже с Приветом
Posts: 10367
Joined: 12 Apr 2001 09:01
Location: Lithuania/UK

Post by f_evgeny »

Dmitry67 wrote:Не обязательно вроде
DTS можно параметризировать. Но я сам это решил не использовать
Мне было легче вынести сложные вещи по подготовке .txt файлов к загрузке в Perl, вызываемый xp_cmdshell

Я так и не понял
Речь идет об экспорте, так ? Из разных баз причем структура их может отличаться ?
А на сколько сильно отличаться ?

Может малой кровью и не обойтись
Универсальный способ - писать чтото что вызывается xp_cmdshell, коннектится к базе и само пишет файл. Я такие вещи писал на Perl. Пишутся в несколько строчек.

Офтопик. Вы использовали ActivePerl?
Дальше, все будет только хуже. Оптимист.
User avatar
tengiz
Уже с Приветом
Posts: 4468
Joined: 21 Sep 2000 09:01
Location: Sammamish, WA

Post by tengiz »

Sabina wrote:А bcp у меня не распознает schema changes, ну или по крайней мере я не знаю как ее это заставить сделать. То есть если вставить новую колонку bcp на импорте ругается.

Если Вам нужно импортировать данные в таблицу с другой структурой - используйте форматные файлы, или делайте импорт во view, содержащий только старые колонки. А также можно сделать bcp in во временную таблицу со стабильной структурой и уже оттуда вставлять в окончательную таблицу с новой структурой. Данных, кстати, много? А то если не очень много (тысячи строк), то и мета-скрипт можно было бы написать, который нарисует из реальной таблицы другой скрипт с кучей insert into...values... который загрузит собственно данные.
Cheers
User avatar
Dmitry67
Уже с Приветом
Posts: 28294
Joined: 29 Aug 2000 09:01
Location: SPB --> Gloucester, MA, US --> SPB --> Paris

Post by Dmitry67 »

f_evgeny wrote:Универсальный способ - писать чтото что вызывается xp_cmdshell, коннектится к базе и само пишет файл. Я такие вещи писал на Perl. Пишутся в несколько строчек.

Офтопик. Вы использовали ActivePerl?[/quote]
Да
Но собственно ничего Active и нестандартного там не было кроме

use OLE;
Зарегистрированный нацпредатель, удостоверение N 19719876044787 от 22.09.2014
User avatar
Sabina
Уже с Приветом
Posts: 5669
Joined: 13 Oct 2000 09:01
Location: East Bay, CA

Post by Sabina »

Dmitry67 wrote:Не обязательно вроде
DTS можно параметризировать. Но я сам это решил не использовать
Мне было легче вынести сложные вещи по подготовке .txt файлов к загрузке в Perl, вызываемый xp_cmdshell
.


Спасибо, я поискала по ключевым словам "DTs parameters" и уже есть от чего оттолкнуться.
Как комбинировать Perl и SQL Server я не совсем представляю и буду очень признательна за линки . Вплоть до того куда например например принято совать perl скрипты :D А то я создала DTSfiles папку на сервере в shared SQL директории и по-моему меня "не очень поняли". Впрочем, я DBA-ские обязанности выполняю не по своему выбору, так что уж как могу.

Dmitry67 wrote:Я так и не понял
Речь идет об экспорте, так ? Из разных баз причем структура их может отличаться ?
А на сколько сильно отличаться ?
.


И да и нет.
Есть несколько custome-ров (можно назвать их beta customers), у каждого база одинаковой структуры на наших серверах (web service trial).
К примеру мы выпустили новый релиз и для этого пришлось слегка поменять несколько таблиц (в основном колонки вставить). И надо внести изменения в базы клиентов, при этом не теряя их данные.
В идеале такого быть не должно, базу надо сразу нормально дизайнить, но я просто исхожу из того, что имеем.
То что я сделала не годится, ибо придется создавать DTS на каждом конкретном сервере, а хотят скрипт, который можно прогнать подставив server name и db name.
C bcp у меня не получилось импортировать, но я ее запускала со стандартными опциями. Не понимает она изменения структуры таблиц.

Dmitry67 wrote:Может малой кровью и не обойтись
Универсальный способ - писать чтото что вызывается xp_cmdshell, коннектится к базе и само пишет файл. Я такие вещи писал на Perl. Пишутся в несколько строчек.


1) Буду копать параметры DTS.
2) Если кто подкинет побольше информации про perl (линки, sample code), покопаюсь и в этом. Я когда-то форматировала файлы на awk и gawk.
В общем посмотрим какой кровью.

Сабина

PS. Не по теме, Дима а вы в какой части Парижа живете/работаете?
Я работала под Парижем в Massy, было довольно-таки тоскливо cмотреть на южный пригород после толкания в RER каждое утро. А вот знакомый работал в La Defense, говорит, совсем другое восприятие жизни 8)
А во Finac ходите по выходным ? :)
User avatar
Sabina
Уже с Приветом
Posts: 5669
Joined: 13 Oct 2000 09:01
Location: East Bay, CA

Post by Sabina »

Cпасибо Тенгиз, сколько сразу новых (для меня!) идей!

tengiz wrote:Если Вам нужно импортировать данные в таблицу с другой структурой - используйте форматные файлы

В смысле форматировать файл в том же perl-е и потом импортировать или тут имеется в виду что-то еще?

tengiz wrote:или делайте импорт во view, содержащий только старые колонки. А также можно сделать bcp in во временную таблицу со стабильной структурой и уже оттуда вставлять в окончательную таблицу с новой структурой.


Это получается все равно что создать для каждого клиента по новой базе и перегонять из старой в новую.

tengiz wrote:Данных, кстати, много? А то если не очень много (тысячи строк), то и мета-скрипт можно было бы написать, который нарисует из реальной таблицы другой скрипт с кучей insert into...values... который загрузит собственно данные.


Очень мало пока данных, все на trial. Так балуются. Но в реальной рабочей версии будет много. А вы не могли бы привести какой-нибудь пример подобного скрипта, я бы дальше сама.

Еше раз преогромное спасибо,
Сабина
Niky
Уже с Приветом
Posts: 550
Joined: 31 Mar 2000 10:01
Location: Moscow --> Baltimore, MD

Post by Niky »

Что-то я совсем перестал понимать, чего хочется сделать. Если задача в том, чтобы добавить колонки к таблицам без потери данных, так они и так не потеряются - ALTER TABLE и все дела :pain1:
User avatar
Sabina
Уже с Приветом
Posts: 5669
Joined: 13 Oct 2000 09:01
Location: East Bay, CA

Post by Sabina »

Niky wrote:Что-то я совсем перестал понимать, чего хочется сделать. Если задача в том, чтобы добавить колонки к таблицам без потери данных, так они и так не потеряются - ALTER TABLE и все дела :pain1:


Так по сю пору и делали.
Но тогда надо каждый раз писать скрипт с alter table, копаясь при этом в том, кто что поменял и где.
Хотят чтобы данные слить, структуру пересоздать(db_schema, триггеры, views, lookup-ы то всегда up to date) и потом снова данные залить. И чтобы все одним скриптом делалось для каждого клиента.

Сабина
User avatar
Sabina
Уже с Приветом
Posts: 5669
Joined: 13 Oct 2000 09:01
Location: East Bay, CA

Post by Sabina »

Sabina wrote:
tengiz wrote:Если Вам нужно импортировать данные в таблицу с другой структурой - используйте форматные файлы

В смысле форматировать файл в том же perl-е и потом импортировать или тут имеется в виду что-то еще?


Ага, нашла http://www.schemamania.org/jkl/booksonline/SQLBOL70/html/impt_bcp_16.htm

Сабина
Niky
Уже с Приветом
Posts: 550
Joined: 31 Mar 2000 10:01
Location: Moscow --> Baltimore, MD

Post by Niky »

Ну есть и посвежее: MS SQL Server 2000 BOL.

Return to “Вопросы и новости IT”