SQL Server Performance

DTS Import/Export Wizard

Discussion in 'Preguntas sobre SQL Server en Español.' started by emadrigal, May 26, 2004.

  1. emadrigal New Member

    Estimados compañeros de grupo solicito nuevamente su valiosa ayuda para resolver un problema con la importación de datos. Tengo un archivo en texto plano, con una sola columna, no tiene ningún índice, solo una columna. Estoy buscando subirlo a una tabla de Sql Server2000. Lo hago a través del DTS Import/Export Wizard, lo hace bien, pero cuando reviso la información en la tabla, encuentro que sí subió todas las filas pero en desorden. Solo los primeros 500 o 600 registros tienen el orden que tenían en el archivo de texto original, yo necesito que pasen los datos en el mismo orden que tienen en el archivo de texto pues así necesito manipularlos con otros procesos posteriormente. ¿Alguien sabe porqué el proceso de importación no respeta el orden que tengo en el archivo de texto?. ¿Hay alguna otra manera de realizar la exportación de datos?.
    Agradezo la valiosa ayuda que me puedan dar al respecto.
    Saludos.
    Enrique.

    Enrique Madrigal
  2. Raulie New Member

    Sí, usted puede poner un Clustered Index en la columna y debe de ordenar lo para usted.
  3. Luis Martin Moderator

    Cierto. Es recomendable crear el Cluster luego de cargar la tabla.

    Luis Martin
    Moderator
    SQL-Server-Performance.com

    All postings are provided “AS IS” with no warranties for accuracy.

  4. emadrigal New Member

    Tengo una duda sobre el Cluster. Esta característica funciona si existe una columna por la cual se puede ordenar el archivo. El problema que tengo con mi archivo es que necesito copiarlo tal cual viene del archivo de texto, pero no tiene una columna que se pueda ordenar, ya que el archivo pasa a una sola columna en la tabla destino, y esta columna contiene cartacteres alfanuméricos. ¿Aún así trabaja el cluster?
    Gracias y saludos.

    Enrique Madrigal
  5. Raulie New Member

    El cluster Index almacenará los datos secuencialmente en la misma orden que está en la source data.
  6. emadrigal New Member

    Sigo teniendo dudas:
    El Clustered Index se crea antes de cargar la tabla o después de cargarla?.
    Gracias.

    Enrique Madrigal
  7. Raulie New Member

    <blockquote id="quote"><font size="1" face="Verdana, Arial, Helvetica" id="quote">quote:<hr height="1" noshade id="quote"><i>Originally posted by LuisMartin</i><br /><br />Cierto. Es recomendable crear el Cluster luego de cargar la tabla.<br /><br />Luis Martin<br />Moderator<br />SQL-Server-Performance.com<br /><hr height="1" noshade id="quote"></blockquote id="quote"></font id="quote"><br /><br />Antes, como lo especificamos anteriormente. [<img src='/community/emoticons/emotion-2.gif' alt=':D' />]
  8. emadrigal New Member

    Ya he creado el cluster index, y en efecto, ha ordenado el archivo, sin embargo no es el resultado que espero, creo que no me he explicado bien, una disculpa. Veamos, el archivo de texto que quiero subir no tiene un orden numérico ni alfabético, pero así tal cual como está es como quiero que pase a la tabla destino. Al crear el clustered index, el proceso me lo ha ordenado, de acuerdo al índice, con lo que se pierde la secuencia que tiene en el archivo de texto plano y así no me sirve. Espero me puedan orientar con algun consejo.
    Gracias.

    Enrique Madrigal
  9. Raulie New Member

    Crear otra columna ID (IDENTITY) le hace un CLUSTERED INDEX en esta columna, después aga la importación.
  10. Luis Martin Moderator

    Esa es una solución, pero si es una carga que se repetirá en el tiempo, sería razonable revisar la configuración del origen del archivo y asemejarla a la del servidor.
    Es decir el orden del sort del SQL Actual es el que decide como se cargará la información tomada externamente, si ese orden no coincide con el del archivo de texto entonces tendrías que aplicar alguna de las dos soluciones anteriores.




    Luis Martin
    Moderator
    SQL-Server-Performance.com

    All postings are provided “AS IS” with no warranties for accuracy.

  11. emadrigal New Member

    ¡Hola grupo, buenos días!. Mi problema es el siguiente:
    He creado un paqute de transformación de datos en SQLServer 2000, en el cual el origen de los datos es un archivo de texto plano, el cual se carga a una tabla de
    sql server. He logrado ejecutar el paquete con código de VB6, mas no he encontrado cómo pasarle al paquete como parámetro la ruta y el nombre del archivo de texto. Por lo
    que para que funcione la ejecución del paquete, el archivo debe de existir en la ruta que tiene especificada el paquete DTS la cual queda fija al momento de crear el
    paquete. Alguien sabe como puedo pasarle el parámetro de ruta y nombre del archivo al paquete DTS?. Aquí coloco el código con el cual ejecuto el paquete.

    If FG_ExecuteDTS("DTS_ArchivoContable", "") Then
    'Ejecuta
    endif

    Public Function FG_ExecuteDTS(sDTSName As String, sPkgPwd
    As String) As Boolean
    On Error GoTo msgerror
    Dim oPkg As DTS.Package

    Set oPkg = New DTS.Package
    oPkg.LoadFromSQLServer gsServidor, gsUsrBD, gsPwdBD, ,
    sPkgPwd, , , sDTSName, 0

    oPkg.FailOnError = True
    oPkg.Execute

    oPkg.UnInitialize
    Set oPkg = Nothing
    FG_ExecuteDTS = True
    Exit Function

    msgerror:
    gsError = Err.Number & " Error en el paquete " &
    oPkg.Name & Err.Description
    End Function

    Agradezco de antemano la ayuda que me puedan dar.
    Enrique.



    Enrique Madrigal
  12. Raulie New Member

    Hola que tal,

    Verifique si usted puede utilizar esto para conseguir una idea cómo obtener la ruta.

    Dim oConnection As DTS.Connection2
    Set oConnection = goPackage.Connections.New("DTSFlatFile")

    oConnection.ConnectionProperties("Data Source") = "D:TextImportsDTSImport210604.txt"
    oConnection.ConnectionProperties("Mode") = 1
    oConnection.ConnectionProperties("Row Delimiter") = vbCrLf
    oConnection.ConnectionProperties("File Format") = 1
    oConnection.ConnectionProperties("Column Delimiter") = ","
    oConnection.ConnectionProperties("File Type") = 1
    oConnection.ConnectionProperties("Skip Rows") = 0
    oConnection.ConnectionProperties("Text Qualifier") = """"
    oConnection.ConnectionProperties("First Row Column Name") = False
    oConnection.ConnectionProperties("Number of Column") = 0
    oConnection.ConnectionProperties("Max characters per delimited column") = 255

    oConnection.Name = "Text File (Source)"
    oConnection.ID = 1
    oConnection.Reusable = True
    oConnection.ConnectImmediate = False
    oConnection.DataSource = "D:TextImportsDTSImport210604.txt"
    oConnection.ConnectionTimeout = 60
    oConnection.UseTrustedConnection = True
    oConnection.UseDSL = False

    goPackage.Connections.Add oConnection
    Set oConnection = Nothing

    goPackage.Execute
    goPackage.Uninitialize

    Set goPackage = Nothing

    Set goPackageOld = Nothing

    End Sub
  13. emadrigal New Member

    Hola, gracias por la ayuda. Estoy revisando el código que me proporcionaste, pero no logro ubicar en donde están los parámetros de conexión. Me da error en la línea:
    Set oConnection = goPackage.Connections.New("DTSFlatFile")
    El mensaje es: "Variable not defined", me lo marca en la palabra
    "goPackage".
    A qué se refiere esta palabra.
    Gracias.



    Enrique Madrigal
  14. Raulie New Member

    En tu caso ya declarastes una variable Dim oPkg As DTS.Package cambia el mio gopackage al tuyo oPkg.

    Como....

    Dim oConnection As DTS.Connection2
    Set oConnection = oPkg.Connections.New("DTSFlatFile")
  15. Aviel New Member

    HOLA Espainola.<br /><br />Yoy may put the subject in spanish as well .. <img src='/community/emoticons/emotion-1.gif' alt=':)' /><br /><br />Aviel Iluz<br />Database Administrator<br />Pacific Micromarketing<br />Melbourne Australia<br />www.pacmicro.com.au<br />

Share This Page