Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

importar registros formato txt

82 views
Skip to first unread message

Shanty

unread,
Apr 3, 2008, 6:18:19 PM4/3/08
to
Hola a todos, estoy intentando hacer un programa con VB .NET 2005 y
necesitaria que me
ayudasen. Quiero importar registros a la base de datos desde un archivo .txt
mediante codigo pero no me aclaro.

Si alguien me pudiera ayudar!
Gracias


SoftJaén

unread,
Apr 4, 2008, 7:09:30 AM4/4/08
to
"Shanty" escribió:

> estoy intentando hacer un programa con VB .NET 2005 y necesitaria que me
> ayudasen. Quiero importar registros a la base de datos desde un archivo
> .txt
> mediante codigo pero no me aclaro.

Hola:

Si tu no te aclaras, menos nos vamos a aclarar nosotros. :-)

¿De qué tipo de base de datos estamos hablando? ¿Cual es el carácter
delimitador de los campos en el archivo de texto? ¿Qué idioma tienes
definido en la Configuración Regional de Windows?

Un saludo

--
Enrique Martínez
[MS MVP - VB]

Nota informativa: La información contenida en este mensaje, así como el
código fuente incluido en el mismo, se proporciona «COMO ESTÁ», sin
garantías de ninguna clase, y no otorga derecho alguno. Usted asume
cualquier riesgo al poner en práctica, utilizar o ejecutar lo recomendado o
sugerido en el presente mensaje.

Shanty

unread,
Apr 4, 2008, 10:12:06 AM4/4/08
to
Hola Enrique trabajo con SQLSERVER 2005, el caracter delimitador es el
tabulador y el idioma predefinido es el español

Un saludo

"SoftJaén" <grupo_n...@softjaen.es> escribió en el mensaje
news:EFC0DFAD-43C3-40C8...@microsoft.com...

SoftJaén

unread,
Apr 4, 2008, 11:13:04 AM4/4/08
to
"Shanty" escribió:

> trabajo con SQLSERVER 2005, el caracter delimitador es el
> tabulador y el idioma predefinido es el español

Si trabajas con SQL Server, lo mejor que puedes hacer es ejecutar una
inserción masiva de registros mediante la instrucción BULK INSERT del
lenguaje T-SQL. Por ejemplo, si la primera fila de tu archivo de texto
contiene los nombres de los campos, ejecutarías la siguiente consulta T-SQL:

' Configuramos la conexión
'
Dim cnn As New SqlConnection( _
"Data Source=(local);" & _
"Integrated Security=SSPI")

' Construimos la consulta de inserción masiva, donde indicamos
' que la primera fila contiene el nombre de los campos, as¡
' como que el carácter delimitador de los campos es la
' tabulacion '\t'.
'
Dim sql As String = _
"BULK INSERT BaseDatos..NombreTabla " & _
"FROM 'C:\Carpeta\Archivo.txt' " & _
"WITH (" & _
"CODEPAGE = 'ACP'," & _
"FIRSTROW = 2," & _
"FIELDTERMINATOR = '\t'," & _
"ROWTERMINATOR = '\n')"

' Configuramos el comando.
'
Dim cmd As New SqlCommand(sql, cnn)

' Abrimos la conexión
'
cnn.Open()

' Ejecutamos el comando.
'
Dim n As Int32 = cmd.ExecuteNonQuery

' Mostramos el número de registros afectados.
'
MessageBox.Show(n.ToString)

' Cerramos la conexión
'
cnn.Close()

Si la primera fila del archivo de texto NO CONTIENE el nombre de los campos,
elimina de la consulta el parámetro FIRSTROW = 2.

Shanty

unread,
Apr 4, 2008, 11:40:33 AM4/4/08
to
Gracias por tu ayuda, lo probare y ya te contaré


"SoftJaén" <grupo_n...@softjaen.es> escribió en el mensaje

news:F5CF74C7-06F4-4D1B...@microsoft.com...

SoftJaén

unread,
Apr 4, 2008, 11:53:39 AM4/4/08
to
Se me ha olvidado comentarte que, se comprende que la tabla ya existe en la
base de datos de SQL Server, y que tiene la misma estructura de campos que
el archivo de texto cuyos datos deseas importar, al menos, en cuanto al
número de campos existentes en ambos orígenes, porque si en la tabla hay
menos campos que en el archivo de texto, en el último campo de la tabla se
añadirán todos los valores de los campos restantes.

Asimismo, si la tabla tiene establecida una clave principal, obtendrás la
oportuna excepción si se intenta duplicar datos ya existentes en el campo
que conforma la clave. Asi que ... ¡Hay que tener cuidadito a la hora de
importar los datos! :-)

0 new messages