【问题标题】:FoxPro DBF Table Into MySQL Table C#FoxPro DBF 表转换为 MySQL 表 C#
【发布时间】:2015-10-01 15:24:07
【问题描述】:

我正在尝试从 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();
        }
    }
}

如您所见,我一直纠结于如何构建命令以及这是否会按我的意愿工作。

【问题讨论】:

    标签: c# mysql database visual-foxpro


    【解决方案1】:

    如果您想通过在 FoxPro 端发送 SQL 语句来执行此操作,您建议的 FoxPro 语句 Select ... From ... Into ... 可能不会执行您想要的操作,因为它会创建 FoxPro“进入”目标,即 DBF 表或“光标”或数组。

    而在 FoxPro 方面,如果“进入”目标是 Visual FoxPro“CursorAdapter”对象或“远程视图”(位于 FoxPro“数据库”中,SQL Insert Into ... Select ... From ... 将能够执行您想要的操作DBC),两者都可以通过 ODBC 连接到 MySQL 数据库,前者也可以通过 OleDB 连接。如果您还没有在 FoxPro 端准备好它们中的任何一个,则需要一个 VFP 开发环境来创建它们,因为并非所有 FoxPro 命令和函数都受其 OleDB 驱动程序支持,另请参阅“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 ...”语句

    【讨论】:

    • 正如我在问题中所说,我问的是如何在 C# 中使用 SQL 命令执行此操作
    • 是的,但是如果您将示例代码中描述的 SQL 命令从 C# 发送到 FoxPro 端,除非您按照中所述进行一些准备,否则人们不会知道 MySQL 端回复
    【解决方案2】:

    您想要做的事情不能只是从 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 可以批量插入的标准格式。

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

    【讨论】:

      猜你喜欢
      • 2012-02-09
      • 2013-11-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多