我试图从FoxPro DBF表中选择所需的列,然后将它们插入MySQL表中,最好(如果可能)从我选择的列中动态创建SQL表。

我看了一下,但我不太理解这可能是围绕SQL语句"SELECT INTO FROM"构建的,但是我不确定如何做到这一点,尤其是在C#中,尤其是从DBF到MySQL的场景中,而不是MySQL到MySQL。

有人可以建议我如何在C#中执行此操作吗?我已经有了这样的OleDB连接设置;

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();
        }
    }
}


如您所见,我对如何构建命令以及此命令是否按我希望的方式工作感到困惑。

最佳答案

如果您想通过在其中发送SQL语句在FoxPro方面执行此操作,那么您提议的FoxPro语句Select ... From ... Into ...可能不会执行您想要的操作,因为它将创建FoxPro“插入”目标,即DBF表或“游标”或数组。

在FoxPro方面,如果“插入”目标是Visual FoxPro“ CursorAdapter”对象或“远程视图”(位于FoxPro“数据库” DBC中),则SQL Insert Into ... Select ... From ...可以执行您想要的操作,两者都可以通过ODBC连接到MySQL数据库,前者也可以通过OleDB连接到MySQL数据库。如果尚未在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 ...”语句发送给MySQL数据库

10-08 00:11