我试图从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数据库