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:
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.




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()
Respuesta Responder a este mensaje
#2 SoftJaén
12/11/2006 - 17:16 | Informe spam
"Carlos Aparicio" preguntó:

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

carlos | 23456 | caracas
Jose | 18934 | valencia



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.
Respuesta Responder a este 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:

"Carlos Aparicio" preguntó:

> Necesito saber como hago para cargar el contenido de un archivo de texto
> plano (.txt) en una base de datos SQL SERVER 2000.
> tendria solo 3 columnas (nombre, identificacion, ciudad) separados
> por "|" algo asi:
>
> carlos | 23456 | caracas
> Jose | 18934 | valencia

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.




Respuesta Responder a este mensaje
#4 SoftJaén
13/11/2006 - 10:27 | Informe spam
"Carlos Aparicio" escribió:

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?



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

"Carlos Aparicio" escribió:
>
> 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?

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.






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
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida