Je cherche à créer des tables de transfert dans SQL Server pour l'un de nos packages SSIS afin de réduire le nombre d'appels DB2 car les appels DB2 peuvent rencontrer des dépassements de délai lorsque DB2 recycle les connexions inactives. Existe-t-il une méthode automatisée pour copier le schéma de table de DB2 vers SQL Server? Il devrait y avoir un mappage 1 à 1 des types de données entre DB2 et SQL Server pour que cela fonctionne. S'il n'y a pas d'outil existant, je peux en écrire un moi-même, car certaines de nos tables DB2 ont plus de 20 colonnes et il serait difficile de recréer manuellement dans SQL Server.Copier le schéma de table de DB2 vers SQL Server
Répondre
J'ai un script partiellement fonctionnel que vous pouvez utiliser. Nous ne nous soucions pas des clés primaires et autres de DB2 dans notre côté SQL Server. Notre seule préoccupation est de récupérer les données. De plus, les données que j'ai eu à traiter étaient uniquement basées sur des chaînes ou des dates, donc l'endroit où je construis le type_données pourrait être incorrect pour la décimale.
Le concept de base est que j'inspecte le sysibm.syscolumns
pour dériver une liste de toutes les tables et colonnes, puis essaie de fournir une traduction entre les types de données DB2 et SQL Server.
Quoi qu'il en soit, essayer. N'hésitez pas à modifier ou faire un commentaire sur ce qui est cassé et je verrai si je peux le réparer.
Ceci est construit en utilisant un mélange de la fonction CONCAT de SQL Server 2012 et de l'opérateur de concaténation de chaînes classique +
. Il suppose également qu'un serveur lié existe pour que OPENQUERY fonctionne.
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. Réplication DB2 SQL Server
- 2. Vue depuis DB2 vers SQL Server 2005
- 3. SQL Server 2008: copier la structure de la table, et le schéma
- 4. Comment copier un schéma et certaines données de SQL Server vers une autre instance?
- 5. Conception de schéma SQL Server
- 6. Table de rotation DB2 SQL
- 7. IBM DB2 - Impossible de définir le schéma
- 8. Comment copier une grande quantité de données d'une table vers une autre table dans SQL Server
- 9. Comment extraire par programme le schéma de table SQL Server pour créer SQL Server CE?
- 10. Dans VB.NET/C#, comment copier un schéma de table SQL d'un DB vers un autre?
- 11. Comment migrer le schéma MySQL vers SQL Server CE?
- 12. copier des tables Oracle vers DB2
- 13. Renommer le schéma SQL Server
- 14. Script de création de table DB2 vers MYSQL
- 15. Obtenir le schéma SQL Server pour une table
- 16. T-SQL Sélectionnez un groupe de données d'un autre DB et Copier vers DB2
- 17. drop schéma SQL Server
- 18. Utilisez C# pour copier des données de table d'Oracle vers SQL Server?
- 19. db2 Export Table SQL - Pas de données
- 20. Table de copie SSIS MySQL vers SQL Server
- 21. db2 sql gauche table de jointure aide
- 22. Meilleures pratiques de schéma SQL Server
- 23. Schéma en double dans SQL Server 2008
- 24. SQL Server 2005 XML vers la table
- 25. SQL Server: pointant vers l'ID d'autre table
- 26. Conversion de SQL Server vers DB2: problèmes de boîte à outils de migration
- 27. Sortie du schéma SQL Server
- 28. Transact SQL - Informations de schéma
- 29. Automatiser SQL Server DB schéma Schéma Génération
- 30. Pour créer un script SQL pour générer le schéma de table avec des données pour une table DB2
J'ai essayé de créer un serveur lié sur mon instance locale de SQL Server 2005 et SQL Server 2012, mais je n'ai pas eu de chance d'obtenir une connexion à DB2. J'utilise le fournisseur OLE DB d'IBM pour créer le serveur lié. Notre DB2 DBA a installé DB2 Connect sur ma machine et a défini tous les noms de sources de données pour chacun de nos environnements, donc je n'ai pas besoin de créer manuellement la chaîne Provider. –