Я ищу создание промежуточных таблиц в SQL Server для одного из наших пакетов SSIS, чтобы сократить количество вызовов в DB2, поскольку вызовы DB2 могут возникать таймауты, когда DB2 перерабатывает неактивные соединения. Существует ли автоматизированный метод копирования схемы таблиц с DB2 на SQL Server? Для этого необходимо будет отображать от 1 до 1 типы данных между DB2 и SQL Server. Если нет инструмента, который существует, я могу написать его сам, поскольку некоторые из наших таблиц DB2 имеют 20 + столбцов, и было бы больно вручную воссоздать в SQL Server.Скопируйте схему таблицы из DB2 в SQL Server
ответ
У меня есть частично рабочий скрипт, который вы можете использовать. Мы не заботимся о первичных ключах и таких, как DB2, в нашу сторону SQL Server. Наша единственная проблема заключается в том, чтобы получить данные. Кроме того, данные, с которыми мне приходилось иметь дело, были связаны только с строкой или датой, поэтому, когда я создаю файл data_type, может быть некорректным для десятичного числа.
Основная идея заключается в том, что я проверяю sysibm.syscolumns
на получение списка всех таблиц и столбцов, а затем попытаюсь обеспечить перевод между типами данных DB2 и SQL Server.
В любом случае, сделайте снимок. Не стесняйтесь редактировать или делать комментарии о том, что сломано, и я посмотрю, смогу ли я это исправить.
Это построено с использованием функции CONCAT SQL Server 2012 и классического оператора конкатенации строк +
. Он также предполагает наличие связанного сервера для работы OPENQUERY.
WITH SRC AS
(
SELECT
OQ.NAME AS column_name
, OQ.TBNAME AS table_name
--, RTRIM(OQ.COLTYPE) AS data_type
, CASE RTRIM(OQ.COLTYPE)
WHEN 'INTEGER' THEN 'int'
WHEN 'SMALLINT' THEN 'smallint'
WHEN 'FLOAT' THEN 'float'
WHEN 'CHAR' THEN CONCAT('char', '(', OQ.LENGTH, ')')
WHEN 'VARCHAR' THEN CONCAT('varchar', '(', OQ.LENGTH, ')')
WHEN 'LONGVAR' THEN CONCAT('varchar', '(', OQ.LENGTH, ')')
WHEN 'DECIMAL' THEN CONCAT('decimal', '(', OQ.SCALE, ')')
WHEN 'DATE' THEN 'date'
WHEN 'TIME' THEN 'time'
WHEN 'TIMESTMP' THEN ''
WHEN 'TIMESTZ' THEN ''
WHEN 'BLOB' THEN ''
WHEN 'CLOB' THEN ''
WHEN 'DBCLOB' THEN ''
WHEN 'ROWID' THEN ''
WHEN 'DISTINCT' THEN ''
WHEN 'XML' THEN ''
WHEN 'BIGINT' THEN ''
WHEN 'BINARY' THEN ''
WHEN 'VARBIN' THEN ''
WHEN 'DECFLOAT' THEN ''
ELSE ''
END AS data_type
, OQ.LENGTH
, OQ.SCALE
, CONCAT(CASE OQ.NULLS WHEN 'Y' THEN 'NOT' ELSE '' END, ' NULL') AS allows_nulls
, OQ.UPDATES AS updateable
FROM
OPENQUERY(LINKED, 'SELECT * FROM abcde01.sysibm.syscolumns T WHERE T.TBCREATOR = ''ABCD'' ') AS OQ
)
, S2 AS
(
SELECT
CONCAT(QUOTENAME(S.column_name), ' ', S.data_type, ' ', S.allows_nulls) AS ColumnDeclaration
, S.table_name
FROM
SRC AS S
)
, MakeItPretty AS
(
SELECT DISTINCT
QUOTENAME(S.TABLE_NAME) AS TABLE_NAME
, STUFF
(
(
SELECT ',' + ColumnDeclaration
FROM S2 AS SI
WHERE
SI.TABLE_NAME = S.TABLE_NAME
FOR XML PATH('')),1,1,''
) AS column_list
FROM
S2 AS S
)
SELECT
CONCAT('CREATE TABLE ', MP.TABLE_NAME, char(13), MP.column_list) AS TableScript
FROM
MakeItPretty AS MP;
- 1. Скопируйте схему db2 в db2 со всеми таблицами и переименуйте схему?
- 2. Как найти схему таблицы в DB2?
- 3. Репликация DB2 SQL Server
- 4. Как увидеть схему таблицы (файла) db2
- 5. Переименовать схему SQL Server
- 6. Поворот таблицы DB2 SQL
- 7. SQL Server: создание таблицы из хранимой схемы?
- 8. DB2 переводит данные в новую схему
- 9. Импортировать файлы DB2 в SQL Server
- 10. DB2 эквивалентна SYSJOBS SQL Server
- 11. Найти схему JSON в SQL Server
- 12. Скопируйте полный SQL Server 2008 db
- 13. Скопируйте данные из таблицы и обновите ее
- 14. Скопируйте таблицы из запроса в Bigquery
- 15. SQL Server Varbinary типа данных в DB2
- 16. Таблица Синхронизация с DB2 на SQL Server
- 17. SQL Server: отбросить схему со специальными символами
- 18. SQL Server литье из таблицы
- 19. Выберите из таблицы DB2 и вставьте в таблицу SQL
- 20. Создать XML-форматированную схему таблиц из SQL Server 2005?
- 21. Что эквивалентно транзакциям SQL Server в DB2?
- 22. Преобразование запроса SQL Server в DB2
- 23. SQL-Server: Обновление таблицы из другой таблицы
- 24. Скопируйте существующую строку «n» в SQL Server
- 25. Перевод концепций с SQL Server на DB2
- 26. Как программно извлечь схему таблицы SQL Server для построения SQL Server CE?
- 27. Передача данных в новую схему базы данных SQL Server
- 28. SQL Server 2008: как скопировать данные из таблицы в DB1 в таблицу в DB2?
- 29. Получение записей из DB2 и вставка в SQL Server
- 30. Вызов хранимой процедуры DB2 из связанного сервера SQL Server 2008
Я попытался создать связанный сервер в своем локальном экземпляре SQL Server 2005 и SQL Server 2012, но не успел установить соединение с DB2. Я использую поставщик OLE DB от IBM для создания связанного сервера. Наш DB2 DBA настроил DB2 Connect на моей машине и определил все имена источников данных для каждой из наших сред, поэтому мне не нужно вручную создавать строку Provider. –