2010-04-28 1 views
5

Мне нужно скопировать таблицы и данные (около 5-летних данных, 6200 таблиц), хранящихся в sqlserver, я использую datastage и odbc-соединение для подключения, а datstage автоматически создает таблицу с данными, но ее занимает 2-3 часа за стол так как таблицы очень большие (0,5 гигабайта, 300 + столбцов и около 400 тыс. строк).Копирование 6000 таблиц и данных из sqlserver в oracle ==> самый быстрый способ?

Как я могу достичь этого, так как на этом уровне я могу копировать только 5 таблиц в день, но в течение 30 дней мне нужно перемещаться по этим 6000 таблицам.

+0

Это очень много данных. : o –

ответ

2

Можно ли параллельно передавать отдельные таблицы одновременно?

Мы регулярно передаем большие плоские файлы в SQL Server, и я запускаю их параллельно - он использует больше полосы пропускания в сети и SQL Server, но они объединяются быстрее, чем последовательно.

+0

да, я могу это сделать, но я мог бы сделать 2-3 отдельных задания, как установить задание на datastage, при условии, что метаданные и соединение odbc занимают некоторое время для каждой работы. Есть ли какие-либо другие инструменты, которые могут мне помочь на этом? – user218903

6

6000 таблиц по 0,5 ГБ каждый будет составлять около 3 терабайт. Плюс индексы. Я, вероятно, не пошел бы на подключение ODBC, но вопрос в том, где это узкое место.

У вас есть этап выделения из SQL Server. У вас есть транспорт из окна SQL Server в поле Oracle. У вас есть груз.

Если сеть является ограничивающей способностью, вам, вероятно, лучше всего извлечь файл, сжать его, перенести сжатый файл, распаковать его, а затем загрузить. Внешние таблицы в Oracle - это самый быстрый способ загрузить данные из плоского файла (с разделительной или фиксированной длиной), предпочтительно распределенные по нескольким физическим дискам для распространения нагрузки и без ведения журнала.

Если произошла значительная трансформация, я бы забыл провал данных. Все, что не извлекает или загружает, является избыточным, чтобы быть минимизированным.

+0

Единственная причина, по которой я использовал datastage, это то, что мне не нужно создавать структуру таблицы перед загрузкой данных. Считаете ли вы, что извлечение данных из таблицы sqlserver и загрузка их в oracle (после создания структуры таблицы) будет быстрее? шея бутылки мне нужно, чтобы иметь возможность копировать по крайней мере 30 столов в день, но сейчас требуется 3 часа для загрузки таблицы 400k, 300column. каково нормальное время, которое нужно предпринять для такого рода таблиц, есть ли другие инструменты, которые могут это сделать, а также автоматизировать его? – user218903

+1

@ nazer555 - создание таблиц должно быть относительно безболезненным. Я создал сценарии создания таблиц автоматически, чтобы создавать таблицы Teradata из таблиц SQL Server, и, хотя есть некоторые предварительные работы по написанию кода для создания соответствующего синтаксиса таблицы для различных функций диалектов/индексов, обычно это не так много преимуществ автоматически генерировать схемы таблиц, если вы получаете удар по производительности с помощью datastage. –

+0

Можем ли мы автоматизировать извлечение данных в файл и загрузку в таблицу оракула? есть ли какие-либо инструменты, из которых я могу просто сделать «insert into (oracle table) select * from (sqlservertable)), это позволит автоматизировать процесс, поскольку теперь я автоматически запускаю задания DS. – user218903

2

Задумались ли вы о сценариях схем таблиц и их создании в Oracle, а затем с помощью SSIS для массового копирования данных в Oracle? Другой альтернативой может быть использование связанных серверов и ряд операторов «Select * INTO xxx», которые скопировали бы схему и данные (минус ключевые константы), но я думаю, что производительность будет весьма жалкой с 6000 таблицами.

+0

Я буду исследовать серверы массового копирования и компоновщика SSIS, по крайней мере, я могу автоматизировать сценарии, так как прямо сейчас я запускаю задания вручную. Знаете ли вы хорошие статьи/команды для вышеперечисленного? – user218903