我正在尝试从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();
}
}
}
正如你所看到的那样,我一直坚持如何构建命令,以及这是否会按照我希望的方式运行。
答案 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可以批量插入的标准格式。
但同样,你不能直接从一个到另一个。