IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

MS SQL Server Discussion :

[DTS]générer dynamiquement des tables Postgres 8.0


Sujet :

MS SQL Server

  1. #1
    Membre habitué

    Homme Profil pro
    Inscrit en
    Mars 2005
    Messages
    101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2005
    Messages : 101
    Points : 141
    Points
    141
    Par défaut [DTS]générer dynamiquement des tables Postgres 8.0
    OS: Windows 2000
    Système de base de données: MS SQL Server 2000 et Postgres 8.0
    Environnament de développement: Visual Basic 6.0

    Bonjour, je ne sais pas tropsi je dois poster ma question dans le forum SQL Server ou le forum Postgres.

    J'essaye de copier des tables d'une base SQL Server 2000 vers PostgreSQL 8.0 pour Windows.
    J'arrive à le faire relativement facilement (pour des tables non liées par des clés étrangères) via le DTS de SQL Server.

    Cependant lorsque je sauve l'instruction DTS dans un module Visual Basic,
    je remarque que:
    1) les instruction de copie des données sont exécutées à partir des objet de la librairie DTS ("DTS.Package", "DTS.CustomTask", "DTS.Column" etc...) et paramétrable de l'intérieur du code Visual Basic.

    2) en revanche les instruction pour définir la structure (DDL) des tables de la base Postgres sont des commandes "Create Table" SQL, apparement écrites par un programme extérieur au package DTS :

    par exemple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
     
     
    Public Sub Task_Sub1(ByVal goPackage As Object)
     
    Dim oTask As DTS.Task
    Dim oLookup As DTS.Lookup
     
    Dim oCustomTask1 As DTS.ExecuteSQLTask2
    Set oTask = goPackage.Tasks.New("DTSExecuteSQLTask")
    oTask.Name = "Create Table MainTable Task"
    Set oCustomTask1 = oTask.CustomTask
     
    	oCustomTask1.Name = "Create Table MainTable Task"
    	oCustomTask1.Description = "Create Table MainTable Task"
    	oCustomTask1.SQLStatement = "CREATE TABLE ""MainTable"" (" & vbCrLf
    	oCustomTask1.SQLStatement = oCustomTask1.SQLStatement & """PK"" varchar (50) NULL, " & vbCrLf
    	oCustomTask1.SQLStatement = oCustomTask1.SQLStatement & """Field1"" varchar (50) NULL, " & vbCrLf
    	oCustomTask1.SQLStatement = oCustomTask1.SQLStatement & """Field2Unique"" varchar (50) NULL, " & vbCrLf
    	oCustomTask1.SQLStatement = oCustomTask1.SQLStatement & """Field3"" varchar (50) NULL, " & vbCrLf
    	oCustomTask1.SQLStatement = oCustomTask1.SQLStatement 
     & """Field4IndexedDuplicate"" varchar (50) NULL" & vbCrLf
    	oCustomTask1.SQLStatement = oCustomTask1.SQLStatement & ")"
    	oCustomTask1.ConnectionID = 2
    	oCustomTask1.CommandTimeout = 0
    	oCustomTask1.OutputAsRecordset = False
     
    goPackage.Tasks.Add oTask
    Set oCustomTask1 = Nothing
    Set oTask = Nothing
     
    End Sub

    Je voudrais savoir comment le DTS s'y prend pour générer cette instruction SQL et pour faire le mapping des types de données de SQL Server vers ceux de Postgres. Cala reste pour moi assez mystérieux. Je sais qu'il existe une librairie COM ADOX qui permet de créer via VB, C++ des tables dans des bases de données SQL, mais le pilote ADO de Postgres ne la supporte pas. Le DTS de Microsoft utlise donc forcément une autre technique, qu'il ne laisse pas de façon transparente dans le module Visual Basic qu'il génère lui-même.

    Le but serait de m'inspirer de ce procédé pour recopier, à partir d'une même procédures VB, la structure de la base de donnée source en SQL Server, et ensuipte pouvoir générer dynamiquement les tables de destination pour Postgres.

    Quelqu'un parmi vous aurait-il déjà été confronté au type de problème?

  2. #2
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 772
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 772
    Points : 52 737
    Points
    52 737
    Billets dans le blog
    5
    Par défaut
    Oui, il suffit d'utiliser un outil comme Power AMC et de faire de la rétro ingéniérie. En deux clics vous avez passé votre base SQL Server en base PostGresql.

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

Discussions similaires

  1. Réponses: 5
    Dernier message: 09/11/2010, 12h30
  2. [Dojo] IE, générer dynamiquement des RadioButton
    Par Tavarez59 dans le forum Bibliothèques & Frameworks
    Réponses: 2
    Dernier message: 19/06/2009, 23h02
  3. Générer dynamiquement des graphiques dans Plone
    Par virJnie dans le forum Zope
    Réponses: 1
    Dernier message: 25/06/2007, 14h23
  4. Réponses: 2
    Dernier message: 27/04/2007, 13h03
  5. Réponses: 2
    Dernier message: 31/08/2002, 14h00

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo