mysql - 使用Delphi在两个不同数据库之间传输数据

标签 mysql delphi

我想在 Delphi 中的两个不同数据库之间进行数据传输。我无法使用 TBachmove,因为要传输的列是由用户选择的。

我尝试集成此代码,但我不知道如何将其与不同的数据库集成。

INSERT INTO table_destination ( colonne1, colonne2, colonne3, ..., colonneN )
SELECT
    colonne3,
    colonne8,
    NULL,
    ...,
    colonne137,
    ...,
    colonneN
FROM table_source;

最佳答案

I can not work with TBachmove because the columns that are going to be transferred are selected by the user.

实际上,即使在 D7 中,只要不涉及 Blob 列,您也应该能够很容易地做到这一点。步骤:

  1. 创建指向 MySQL 目标数据库的 ODBC 系统 DSN。

  2. 使用 TTable Table1 创建一个 Delphi 项目,该项目将打开您的 Paradox 表,创建一个 TQuery Query1,该项目使用与 Paradox Table1 相同的 BDE 别名, 使用步骤 1 中的 ODBC 别名的 TTable Table2 和 BatchMove 组件。为 Table2 指定一个 TableName,这是您希望 MySQL 表的名称。

  3. 为用户提供一个 GUI 方法来选择要复制的列。

  4. 当用户选择要复制的列时,创建一条 SQL 语句以从 Paradox 表中选择这些列,将其加载到 Query1 中并对其调用 Open。​​

  5. 将 Query1 设置为 BatchMove1 的 Source,将 Table2 设置为 Destination,将 BatchMove 模式设置为 batCopy

  6. 调用 BatchMove1.Execute。

应该可以了。

我第一次尝试使用“FishFacts”演示中的 Biolife.Db 表来测试这一点失败了,因为我收到了一个异常,提示 blob 大小无效。我的第二次尝试使用 Customer.Db 表,效果很好。

就 blob-size 问题而言,虽然我使用 BDE 已经 15 年多了,但 ISTR 发现有一个最大 blob-size 配置参数可以通过 BDE 管理员进行调整,并且有一个一种将其设置为“无最大值”的方法,可能是将其设置为 -1。

当前版本的 Delphi 包括 FireDAC 数据访问组件,其中包括不依赖于 BDE 的“现代”BatchMove 组件,但我认为 FireDAC 仅包含在 XE8 中的 Delphi 中。

关于mysql - 使用Delphi在两个不同数据库之间传输数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44066741/

相关文章:

mysql - Sequelize 关联出现错误

mysql - 选择第二高的时间戳和相关列

MySql性能医生: someone can translate this values for me?

delphi - Utf8ToString 和较旧的 Delphi 版本

c++ - 有什么方法可以在 DelphiInterface 上实现 dynamic_cast 以获得底层对象类?

mysql - 5 个表,首先扫描以在第一个关系对或第二个关系对中查找单个匹配,无需全表扫描

mysql - 如何在 sql 请求中添加条件?

delphi - 印地 "Could not load SSL library"德尔福 XE2 IW14

delphi - Delphi仅复制具有某些扩展名的文件

Delphi XE8 和 fatal error F2039