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

Re: Exportar de sql a dbf

561 views
Skip to first unread message

SoftJaén

unread,
Feb 14, 2010, 2:36:35 AM2/14/10
to
"SysEdw" preguntó:

> quisiera saber por favor en lo q ue estoy fallando en el
> codigo gracis por su respuesta, estoy exportando datos
> del sql a dbf

Hola:

Si por DBF entendemos un simple archivo de dBASE, puedes utilizar el ISAM
para XBase que nos proporciona el motor Microsoft Jet. Para ello, deberás de
abrir una conexión con el archivo DBF que deseas crear, mediante el
proveedor de datos Ole Db .NET, y ejecutar una consulta SQL de creación de
tabla, en cuya cadena de conexión deberás de especificar tu intención de
conectarte al servidor de SQL Server mediante el driver ODBC del mismo.

Aquí tienes un ejemplo para crear un archivo DBF con los datos de la tabla
Employees de la base de datos de prueba Northwind:

' Construimos la cadena de conexión Ole Db,
' para crear el archivo DBF, indicando únicamente
' la ruta de la carpeta donde se creará.
'
Using cnn As New OleDbConnection( _
"Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=D:\Bases;" & _
"Extended Properties='dBASE 5.0;'")

Try
' Construimos la consulta SQL de creación
' de tabla SELECT * INTO para importar los
' datos. En la misma indicamos nuestra
' intención de conectarnos con SQL Server
' a través de su driver ODBC.
'
Dim sql As String = _
"SELECT * INTO [Archivo#dbf] " & _
"FROM [Employees] " & _
"IN ''[ODBC;DRIVER={SQL Server};" & _
"Server=(local);" & _
"Database=Northwind;" & _
"UID=sa;" & _
"PWD=123]"

' Configuramos un objeto Command para ejecutar
' la consulta SQL de creación de tabla.
'
Dim cmd As New OleDbCommand(sql, cnn)

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

' Ejecutamos la consulta.
Dim n As Integer = cmd.ExecuteNonQuery()

MessageBox.Show( _
"Se creado satisfactoriamente el archivo. " & _
"Número de registros afectados: " & CStr(n), _
"Crear archivo dBASE")

Catch ex As OleDbException
MessageBox.Show(ex.Errors(0).Message)


Catch ex As Exception
MessageBox.Show(ex.Message)

End Try


End Using

En este supuesto, en lugar de EXPORTAR, estarías IMPORTANDO datos al archivo
DBF procedentes de una tabla contenida en una base de datos Microsoft SQL
Server.

Nota: si los archivos DBF ya están creados, en lugar de ejecutar una
consulta de creación de tabla (SELECT * INTO), deberás de ejecutar una
consulta de datos añadidos (INSERT INTO), para ejecutar una inserción masiva
de registros; de la forma que te indico no se puede ejecutar una consulta de
un único registro. Para ejecutar la consulta INSERT INTO, obviamente deberás
de utilizar la sintaxis propia, a la cual le deberás de indicar de igual
manera que los datos están en una base de datos de SQL Server.

Por último, salvo que tengas instalado en tu equipo el motor de base de
datos de Borland, procura que el nombre del archivo DBF contenga la clásica
longitud de 8+3 caracteres.

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.

SysEdw

unread,
Feb 15, 2010, 11:31:01 AM2/15/10
to
Hola SoftJaén gracias por la explicacion pero sabes me esta saliendo un error
que dice D:\Bases no es una ruta de acceso valida. Asegurase de que la ruta
esta escrita correctamente y que esta conectado al servidor donde se
encuentra al archivo, intente cambiar por D:\Marca.DBF pero igual, espero que
me apoues por que quieren que importen datos al dbf al sql 2005 mediante
codigos, gracias de antemano por su respuesta

SoftJa�n

unread,
Feb 16, 2010, 10:54:37 AM2/16/10
to
"SysEdw" escribi�:

> me esta saliendo un error que dice D:\Bases no es una ruta
> de acceso valida. Asegurase de que la ruta esta escrita
> correctamente y que esta conectado al servidor donde se

> encuentra al archivo, ....

�Vamos a ver! Hay que leer los comentarios que aparecen en el ejemplo. ;-)

La carpeta �D:\Bases� que aparece en el ejemplo, es el nombre ficticio de la
carpeta donde se va a crear el archivo llamado �Archivo.dbf�. Si t� deseas
crear el archivo DBF en la ra�z de la unidad C de tu disco duro (cosa que yo
no te recomiendo que hagas), en el par�metro �Data Source� de la cadena de
conexi�n tienes que especificar

Using cnn As New OleDbConnection( _
"Provider=Microsoft.Jet.OLEDB.4.0;" & _

"Data Source=C:\;" & _


"Extended Properties='dBASE 5.0;'")

Es decir, �NICAMENTE se especifica EL NOMBRE DE LA CARPETA en el par�metro
�Data Source�; el nombre del archivo se especifica en la consulta SQL.

�Venga! Prueba de nuevo.

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

SysEdw

unread,
Feb 17, 2010, 8:37:03 PM2/17/10
to
Gracias SoftJaén, por todo debi leer lo comentarios, lo que pasa es que
estaba tan presionado que solo deseaba que me exportaba bien.
pero tengo otra pregunta por lo que le voy a crear en otro hilo.

raymundo hernandez

unread,
Dec 22, 2010, 6:05:41 PM12/22/10
to
como hago para pasar solo algunos registros que cumplan con una restriccion where; por ejemplo tengo el siguiente codigo:

string consql= "SELECT * INTO [" + NombreArchivo + "] FROM [DLesiones] IN ''[ODBC;DRIVER={SQL Server}; Server=10.1.251.16;Database=Plataforma; UID=sa;PWD=saludadm]";

el cual me copia toda la tabla, pero yo quiero solo algunos registros: ejemplo

string consql= "SELECT * INTO [" + NombreArchivo + "] FROM
[DLesiones] WHERE cveEntidad=5 IN ''[ODBC;DRIVER={SQL Server}; Server=10.1.251.16;Database=Plataforma; UID=sa;PWD=saludadm]";

al colocar el where me tira diferetes errores dependiendo del lugar en que coloque el where o si le coloco corchetes: errores como por ejemplo: falta parentesis en comando IN, instruccion from no valido, etc.

alguna respuesta al respecto "sunriseitsa+(arroba)+jotmail(punto)com

> On Saturday, February 13, 2010 3:09 PM SysEdw wrote:

> hola comunidad quisiera saber por favor en lo q ue estoy fallando en el


> codigo gracis por su respuesta, estoy exportando datos del sql a dbf
>

> [CODE]
> Inherits System.Windows.Forms.Form
> Dim connstring As String = _
> "Server=silver\pacon;" & _
> "Provider=sqloledb;" & _
> "Database=Prueba;" & _
> "UID=sa;" & _
> "PWD=123"
>
> Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As
> System.EventArgs) Handles Button1.Click
> Dim cnn As New OleDbConnection(connstring)
> Dim sql As String = "driver={Microsoft Access Driver (*.mdb)};" & _
> "dbq=D:\Salida.DBF;uid=admin;pwd="


>
> Dim cmd As New OleDbCommand(sql, cnn)

> cnn.Open()


>
> Dim n As Integer = cmd.ExecuteNonQuery()
>

> MessageBox.Show("Se ha creado satisfactoriamente la tabla." & _
> ControlChars.CrLf & _
> "N??mero de registros afectados: " & n.ToString, _
> "Exportar datos a SQL dbf
> End Sub
> [/CODE]


>> On Sunday, February 14, 2010 2:36 AM SoftJa?n wrote:

>> "SysEdw" pregunt??:


>>
>>
>> Hola:
>>
>> Si por DBF entendemos un simple archivo de dBASE, puedes utilizar el ISAM

>> para XBase que nos proporciona el motor Microsoft Jet. Para ello, deber??s de
>> abrir una conexi??n con el archivo DBF que deseas crear, mediante el
>> proveedor de datos Ole Db .NET, y ejecutar una consulta SQL de creaci??n de
>> tabla, en cuya cadena de conexi??n deber??s de especificar tu intenci??n de


>> conectarte al servidor de SQL Server mediante el driver ODBC del mismo.
>>

>> Aqu?? tienes un ejemplo para crear un archivo DBF con los datos de la tabla


>> Employees de la base de datos de prueba Northwind:
>>

>> ' Construimos la cadena de conexi??n Ole Db,
>> ' para crear el archivo DBF, indicando ??nicamente
>> ' la ruta de la carpeta donde se crear??.
>> '


>> Using cnn As New OleDbConnection( _
>> "Provider=Microsoft.Jet.OLEDB.4.0;" & _

>> "Data Source=D:\Bases;" & _


>> "Extended Properties='dBASE 5.0;'")
>>

>> Try
>> ' Construimos la consulta SQL de creaci??n


>> ' de tabla SELECT * INTO para importar los
>> ' datos. En la misma indicamos nuestra

>> ' intenci??n de conectarnos con SQL Server
>> ' a trav??s de su driver ODBC.


>> '
>> Dim sql As String = _
>> "SELECT * INTO [Archivo#dbf] " & _
>> "FROM [Employees] " & _
>> "IN ''[ODBC;DRIVER={SQL Server};" & _
>> "Server=(local);" & _
>> "Database=Northwind;" & _
>> "UID=sa;" & _
>> "PWD=123]"
>>
>> ' Configuramos un objeto Command para ejecutar

>> ' la consulta SQL de creaci??n de tabla.


>> '
>> Dim cmd As New OleDbCommand(sql, cnn)
>>

>> ' Abrimos la conexi??n.


>> cnn.Open()
>>
>> ' Ejecutamos la consulta.
>> Dim n As Integer = cmd.ExecuteNonQuery()
>>
>> MessageBox.Show( _
>> "Se creado satisfactoriamente el archivo. " & _

>> "N??mero de registros afectados: " & CStr(n), _


>> "Crear archivo dBASE")
>>
>> Catch ex As OleDbException
>> MessageBox.Show(ex.Errors(0).Message)
>>
>>
>> Catch ex As Exception
>> MessageBox.Show(ex.Message)
>>
>> End Try
>>
>>
>> End Using
>>

>> En este supuesto, en lugar de EXPORTAR, estar??as IMPORTANDO datos al archivo


>> DBF procedentes de una tabla contenida en una base de datos Microsoft SQL
>> Server.
>>

>> Nota: si los archivos DBF ya est??n creados, en lugar de ejecutar una
>> consulta de creaci??n de tabla (SELECT * INTO), deber??s de ejecutar una
>> consulta de datos a??adidos (INSERT INTO), para ejecutar una inserci??n masiva


>> de registros; de la forma que te indico no se puede ejecutar una consulta de

>> un ??nico registro. Para ejecutar la consulta INSERT INTO, obviamente deber??s
>> de utilizar la sintaxis propia, a la cual le deber??s de indicar de igual
>> manera que los datos est??n en una base de datos de SQL Server.
>>
>> Por ??ltimo, salvo que tengas instalado en tu equipo el motor de base de
>> datos de Borland, procura que el nombre del archivo DBF contenga la cl??sica


>> longitud de 8+3 caracteres.
>>
>> 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.


>>> On Monday, February 15, 2010 11:31 AM SysEdw wrote:

>>> Hola SoftJa??n gracias por la explicacion pero sabes me esta saliendo un error


>>> que dice D:\Bases no es una ruta de acceso valida. Asegurase de que la ruta
>>> esta escrita correctamente y que esta conectado al servidor donde se

>>> encuentra al archivo, intente cambiar por D:\Marca.DBF pero igual, espero que
>>> me apoues por que quieren que importen datos al dbf al sql 2005 mediante
>>> codigos, gracias de antemano por su respuesta
>>>

>>> "SoftJa??n" wrote:


>>>> On Tuesday, February 16, 2010 10:54 AM SoftJa?n wrote:

>>>> "SysEdw" escribi?:
>>>>
>>>>
>>>> ?Vamos a ver! Hay que leer los comentarios que aparecen en el ejemplo. ;-)
>>>>
>>>> La carpeta ?D:\Bases? que aparece en el ejemplo, es el nombre ficticio de la
>>>> carpeta donde se va a crear el archivo llamado ?Archivo.dbf?. Si t? deseas
>>>> crear el archivo DBF en la ra?z de la unidad C de tu disco duro (cosa que yo
>>>> no te recomiendo que hagas), en el par?metro ?Data Source? de la cadena de
>>>> conexi?n tienes que especificar


>>>>
>>>> Using cnn As New OleDbConnection( _
>>>> "Provider=Microsoft.Jet.OLEDB.4.0;" & _
>>>> "Data Source=C:\;" & _
>>>> "Extended Properties='dBASE 5.0;'")
>>>>

>>>> Es decir, ?NICAMENTE se especifica EL NOMBRE DE LA CARPETA en el par?metro
>>>> ?Data Source?; el nombre del archivo se especifica en la consulta SQL.
>>>>
>>>> ?Venga! Prueba de nuevo.
>>>>
>>>> --
>>>> 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.


>>>>> On Wednesday, February 17, 2010 8:37 PM SysEdw wrote:

>>>>> Gracias SoftJa??n, por todo debi leer lo comentarios, lo que pasa es que


>>>>> estaba tan presionado que solo deseaba que me exportaba bien.
>>>>> pero tengo otra pregunta por lo que le voy a crear en otro hilo.


>>>>> Submitted via EggHeadCafe
>>>>> Microsoft SQL Server DBA For Beginners
>>>>> http://www.eggheadcafe.com/training-topic-area/SQL-Server-DBA/6/SQL-Server-DBA.aspx

maxi...@gmail.com

unread,
Jun 3, 2014, 9:46:32 AM6/3/14
to
Hola SoftJaén, cómo te va?
Te agradezco por la ayuda brindada, realmente funciona de maravillas!!
Sólo quería consultarte si existe alguna forma de realizarlo, a partir de un DataTable cargado en memoria.
Muchas gracias.
Saludos.

Maxi.
0 new messages