FoxPro DBF表进入MySQL表C#

时间:2015-10-01 15:24:08

标签: c# mysql database visual-foxpro

我正在尝试从FoxPro DBF表中选择我想要的列并将它们插入到MySQL表中,最好(如果可能的话)从我选择的列中动态创建SQL表。

我已经看了一下,我知道这可能是围绕SQL语句"SELECT INTO FROM"构建的,但我不确定如何做到这一点,特别是在C#中编程,特别是我的场景从DBF到MySQL,而不是MySQL到MySQL。

有人可以建议我如何在C#中做到这一点吗?我已经有了OleDB Connection设置;

public void runDbfCmd()
{
    string constr = ConfigurationManager.ConnectionStrings["dbfString"].ConnectionString;

    using (OleDbConnection dbfCon = new OleDbConnection(constr))
    {
        try
        {
            dbfCon.Open();
            OleDbCommand dbfCmd = new OleDbCommand("SELECT INTO STATEMENT HERE");
            dbfCmd.ExecuteNonQuery();
        }
        catch (OleDbException ex)
        {
            throw ex;
        }
        finally
        {
            dbfCon.Close();
        }
    }
}

正如你所看到的那样,我一直坚持如何构建命令,以及这是否会按照我希望的方式运行。

2 个答案:

答案 0 :(得分:1)

如果你想通过在那里发送SQL语句在FoxPro端进行,你提出的FoxPro语句Select ... From ... Into ...可能不会做你想要的,因为它会创建一个FoxPro“Into”目的地,即DBF表或“游标”或数组。

在FoxPro方面,如果“into”目标是Visual FoxPro“CursorAdapter”对象,或者“远程视图”(驻留在FoxPro中),SQL Insert Into ... Select ... From ...将能够执行您想要的操作。数据库“DBC”,它们都可以通过ODBC连接到MySQL数据库,前者也可以通过OleDB连接。如果你没有在FoxPro方面准备好其中任何一个,你需要一个VFP开发环境来创建它们,因为它的OleDB驱动程序并不支持所有FoxPro命令和函数,另请参阅“OLE中支持的Visual FoxPro命令和函数”数据库提供商“https://msdn.microsoft.com/en-us/library/80x51c04%28v=vs.80%29.aspx

假设您没有VFP,也许在C#端做大多数事情会更容易吗?比如将“Select ... From ...”语句发送到FoxPro DB,检索并中间存储结果C#端,然后将“Insert ... Into ...”语句发送到MySQL DB,如果你将

发送“Create Table ...”语句

答案 1 :(得分:1)

您要做的事情不仅可以从VFP数据库中的C#完成,而且可以在尝试时在一个语句中直接进入SQL。理由是。您不能指向一个指向两种不同数据库类型的连接...分别是VFP和MySQL。

你需要做的是......

Open Connection to VFP,
select * from YourTable and fill into a C# data table... 
Look into OleDbDataAdapter.Fill()

在本地从VFP中提取数据后,您可以打开与MySQL数据库的连接,创建表,然后为本地化VFP表中的每一行插入MySQL。

或者,一旦在C#中本地化,您就可以转储到MySQL可以批量插入的标准格式。

但同样,你不能直接从一个到另一个。