Cargar contenido de un archivo .txt en sql server

12/11/2006 - 14:43 por Carlos Aparicio | Informe spam
Buenos dias, estoy buscando informacion que me pueda ser de utilidad y hasta
la fecha no he logrado dar con algo concreto.

Necesito saber como hago para cargar el contenido de un archivo de texto
plano (.txt) en una base de datos SQL SERVER 2000. es algo bastante sencillo
y pequeno el archivo, tendria solo 3 columnas (nombre, identificacion,
ciudad) separados por "|" algo asi:

carlos | 23456 | caracas
Jose | 18934 | valencia

Mi pregunta es como hacer en visual basic.net para cargar ese contenido en
los 3 campos que tengo creados en una base de datos sql.

Gracias de antemano Saludos,

Preguntas similare

Leer las respuestas

#1 Alberto Poblacion
12/11/2006 - 15:15 | Informe spam
"Carlos Aparicio" wrote in
message news:
Mostrar la cita
Lo más sencillo y rápido de ejecutar es usar el método ExecuteNonQuery
de un SqlCommand para transmitir un comando BULK INSERT al Sql Server. El
BULK INSERT ya se encarga de todo:

Dim sentencia as String="BULK INSERT Tabla FROM 'C:\Datos.txt' WITH
FIELDTERMINATOR='|'"
Dim cmd as New SqlCommand(sentencia, conexion)
conexion.Open()
cmd.ExecuteNonQuery()
conexion.Close()
#2 SoftJaén
12/11/2006 - 17:16 | Informe spam
"Carlos Aparicio" preguntó:

Mostrar la cita
Hola, Carlos:

Otra opción pasaría por ejecutar una consulta INSERT INTO, que utilizara la
función OPENROWSET para conectarte con un origen de datos Ole Db, en tu
caso, para conectarse con el proveedor de datos Ole Db de Microsoft Jet y
poder utilizar el ISAM de texto que nos proporciona dicho motor de datos.

Más o menos, la consulta que deberías de ejecutar sería la siguiente:

INSERT INTO Tabla1
SELECT * FROM OPENROWSET(
'Microsoft.Jet.OLEDB.4.0',
'TEXT;Database=C:\Mis Documentos;HDR=Yes',
'SELECT * FROM Archivo#txt')

Observa que en el parámetro «Database» únicamente deberás de especificar la
ruta de la carpeta donde se encuentra el archivo de texto. El nombre del
archivo se especifica en la segunda cláusula FROM de la consulta SQL.

En este caso, el pequeño problema que se plantea es que debes de utilizar un
archivo de información de esquema, que necesariamente tendrá que llamarse
«Schema.ini» y deberá de encontrarse en la misma carpeta donde se aloje el
archivo de texto que deseas importar a SQL Server. Ello se debe al carácter
delimitador de campos que tienes en el archivo de texto ( | ).

Pero, ¡vamos! Que es bien fácil crear el archivo de esquema. Si por ejemplo,
tu archivo de texto se llama «Archivo.txt», abre el Bloc de Notas y creas el
archivo Schema.ini con la siguiente información:

[Archivo.txt]
ColNameHeader=True
CharacterSet52
Format=Delimited(|)
TextDelimiter="

Para más información sobre el archivo «Schema.ini» en general, y sobre los
distintos parámetros que lo conforman en particular, consulta el siguiente
artículo técnico:

Trabajar con los datos de un archivo de texto
http://mvp-access.com/softjaen/arti...t_isam.htm

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.
#3 Carlos Aparicio
13/11/2006 - 00:15 | Informe spam
Entiendo y gracias por el aporte.

Otra pregunta y disculpa los incovenientes, me acaban de pedir que cuando se
cargue nuevamente el archivo el proximo mes si existe algun cambio este tome
el nuevo valor del nuevo .txt. sabes si eso se puede?

me explico un poco mejor!
cargo el archivo del mes de noviembre, todo perfecto pero cuando cargo
el de diciembre si existe alguna modificacion, mi tabla se debe modificar y
tomar el nuevo valor.?????? esto se puede hacer?

"SoftJaén" wrote:

Mostrar la cita
#4 SoftJaén
13/11/2006 - 10:27 | Informe spam
"Carlos Aparicio" escribió:
Mostrar la cita
se
Mostrar la cita
tome
Mostrar la cita
y
Mostrar la cita
Automáticamente, que yo sepa, no es posible. Tendrás que comparar los datos
de los dos meses y hacer las modificaciones oportunas.

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.
#5 Fabian
24/11/2006 - 04:47 | Informe spam
"SoftJaén" wrote:

Mostrar la cita
Hola a todos, como seria el caso si el txt que debo importar a una tabla
tiene elementos repetidos y en la tabla tengo ese campo como clave, lo que no
me permite importar datos repetidos. Es decir quiero importar los datos del
txt pero siempre y cuando no exista ya en la tabla como clave. Lo probe desde
adm corporativo pero al detectar que ya existe en la taba aborta y dice que
no se puede pues se duplicarian las claves.
Usando esto que decian:
Dim sentencia as String="BULK INSERT Tabla FROM 'C:\Datos.txt' WITH
FIELDTERMINATOR='|'"
Dim cmd as New SqlCommand(sentencia, conexion)
conexion.Open()
cmd.ExecuteNonQuery()
conexion.Close()
Me impide que termine el proceso de importacion si quiere agregar algun dato
que ya existe o simplemente sigue con el otro dato.
GRacias
Fabian
Ads by Google
Search Busqueda sugerida