2015-03-04 3 views
0

Мне нужно скопировать таблицы с одного сервера teradata на другой довольно много таблиц. Чтобы решить эту проблему, мне было рекомендовано использовать arcmain. Поэтому таблица может быть передана так:Как динамически использовать Arcmain или просто неполно скопировать таблицы в Teradata?

logon ZZZZ/YYYY,XXXX; 

COPY DATA TABLES 

(DATABASENAME.TABLENAME11) (FROM(DATABASENAME.TABLENAME1)), 
(DATABASENAME.TABLENAME12) (FROM(DATABASENAME.TABLENAME2)), 
(DATABASENAME.TABLENAME13) (FROM(DATABASENAME.TABLENAME3)), 

RELEASE LOCK, 

FILE=NVDSID1; 

Однако у меня есть несколько таблиц с одинаковыми именами между различными базами данными, в дополнении этой таблице нужна только переданы их структуру и некоторые строки (пусть это будет WHERE service_quality ='epic'). Есть ли решение, как просто скопировать таблицы?

Изначально я понял, совсем не так:

1) скопировать все эти таблицы `ы структуру временную базу данных

2) Вставьте только требуется строк их

3) Скопируйте эти таблицы в требуемую БД в другую таблицу

Но, еще раз, таблицы с одинаковыми именами рунируют это решение, они просто не могут быть просто вставлены в тот же БД. Возможно ли сделать эти 3 шага в цикле, добавив еще один шаг - drop table, чтобы избежать конфликтов?

Создание 100 temp DB действительно плохое решение, и уже есть таблицы с длинным именем в 30 символов.

Любые идеи?

ответ

1

В нашей среде мы создали сборник баз данных, в котором мы заполняем таблицы, содержащие фрагменты данных, предназначенные для другой среды. Это очень похоже на ваш подход, за исключением того, что мы используем несколько баз данных и не имеем избыточных имен объектов. Затем мы используем ARCMAIN для АРХИВА этих таблиц и КОПИРОВАЛИ их в целевую среду.

Если у вас несколько таблиц, имеющих одно и то же имя в базах данных, я бы предложил вам создать несколько баз данных, чтобы вырезать фрагменты данных, если только структуры таблиц не совпадают, и цель состоит в объединении срезов в целевой среде. Затем вы можете объединить данные в этих семенных таблицах для процесса архивирования.

Другие решения включают использование FastExport и FastLoad или Dataadover Teradata. Последнее, вероятно, потребует дополнительного лицензирования от Teradata, если вы еще не используете его. Первый из которых управляется сценарием, может быть более гибким, чем ARCMAIN для удовлетворения потребностей вашей конкретной среды.

+1

В конце концов я переименовал таблицы с помощью 2 временных таблиц с именами таблиц и БД и связанных с ними идентификаторов (IDENTITY), чтобы иметь возможность хранить их во временной базе данных. После этого деловая проблема не будет похожа на проблему. – Rocketq

+0

Насколько я знаю, новые Teradata (версии 14.1+) допускают 128 длинных имен таблиц, поэтому в этих именах временного БД можно легко стать уникальными следующим образом: 'Databasename.tableName' – Rocketq

+1

Да, но для этого требуется изменение default DBSControls для включения и, я считаю, вам нужно приложить любое имя, превышающее 30 символов, в двойных кавычках ("). –