Générer dynamiquement une table à partir d'un fichier délimité

Contenu du snippet

Bonjour,
en travaillant les lots DTS SQLserver2000 via VB.net, j'ai cherché comment créer dynamiquement ma table qui changeait à chaque appel avant d'importer des données depuis un fichier texte/délimité.
Voila le bout de code qui en résulte. En espérant que ce sera utile à Qqun.

Source / Exemple :


Private Sub createTableFromFile()
        Try
'le chemin vers mon fichier
            Dim stFile as string = "D:\monFichier.txt"
            Dim oSr As New StreamReader(stFile)
            Dim stTitles As String = oSr.ReadLine
            oSr.Close()
            'je récupere la premiere ligne du fichier
            Dim Titles() As String = Split(stTitles, ",")
            'on supprime la table si nécessaire
            Dim stQuery As String = "IF EXISTS(SELECT name  FROM sysobjects WHERE  name = 'MaTable' AND type = 'U')" &  vbCrLf & "DROP TABLE MaTable"
            Dim oCmdDrop As New SqlClient.SqlCommand
            With oCmdDrop
                .CommandText = stQuery
                .Connection = Me.SqlConnection1
            End With
            Me.SqlConnection1.Open()
            oCmdDrop.ExecuteNonQuery()
            Me.SqlConnection1.Close()
            'je cree la requete create table proprement dit
            Dim i As Int16 = 0
            stQuery = "CREATE TABLE MaTable ("
            While i < Titles.Length
                stQuery = stQuery & "[" & Titles(i) & "]" & " varchar(255)"
                If i < Titles.Length - 1 Then stQuery = stQuery & "," & vbCrLf
                i += 1
            End While
            stQuery = stQuery & ")"

            Dim oCmd As New SqlClient.SqlCommand
            With oCmd
                .CommandText = stQuery
                .Connection = Me.SqlConnection1
            End With
            Me.SqlConnection1.Open()
            oCmd.ExecuteNonQuery()
            Me.SqlConnection1.Close()
        Catch ex As Exception
            MessageBox.Show("error while creating MaTable " & vbCrLf & ex.GetType.ToString & vbCrLf & ex.Message)
        End Try
    End Sub

Conclusion :


ensuite je lance mon lot DTS (avec DTS.Package2).
Voila, sans prétention et à adapter, mais si ça peut rendre service ;-)

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.