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
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.
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
El cluster Index almacenará los datos secuencialmente en la misma orden que está en la source data.
Sigo teniendo dudas: El Clustered Index se crea antes de cargar la tabla o después de cargarla?. Gracias. Enrique Madrigal
<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='' />]
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
Crear otra columna ID (IDENTITY) le hace un CLUSTERED INDEX en esta columna, después aga la importación.
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.
¡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
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
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
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")
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 />