如何使用复制数据从 .sql 增量文件对 MySQL 数据库执行 sql 插入和更新?

问题描述 投票:0回答:1

我有一个数据库增量文件(.sql),它包含 sql 语句,例如 Insets、Delete、Update。数据库是用表和数据设置的,我只是想执行这些更新

我正在尝试找到一种方法来在 Azure ADF 中实现解决方案,以读取 blob 存储中的此文件并在 MySQL 数据库上执行这些语句。特别是使用“复制数据”活动,因为它是资源密集型的,而且我也希望不要对每个语句进行活动调用。如果这可能的话,我将不胜感激?

我的文件包含大约 2800 万个插入内容。我希望能够利用复制数据活动来实现这一目标。

谢谢你

我有一个文件开头的示例,其余部分遵循类似的语句。

BEGIN TRANSACTION;
INSERT INTO FILE(sha256,sha1,md5,crc32,file_name,file_size,package_id) VALUES('000005A9BB818F8B3493DDCED88D1789679046E84ABE71EC3A79A1ED4DE815E2','30330D39A84E2B7B240F1DD8904AC5DAA1DD263C','3DD77458C9D1C38CF5880E08816CAEFE','66058703','.rela.text.frida_socket_host_session_provider_host_entry_class_init',1416,298522);
INSERT INTO FILE(sha256,sha1,md5,crc32,file_name,file_size,package_id) VALUES('000005A9BB818F8B3493DDCED88D1789679046E84ABE71EC3A79A1ED4DE815E2','30330D39A84E2B7B240F1DD8904AC5DAA1DD263C','3DD77458C9D1C38CF5880E08816CAEFE','66058703','.rela.text.frida_socket_host_session_provider_host_entry_class_init',1416,298553);
INSERT INTO FILE(sha256,sha1,md5,crc32,file_name,file_size,package_id) VALUES('000005A9BB818F8B3493DDCED88D1789679046E84ABE71EC3A79A1ED4DE815E2','30330D39A84E2B7B240F1DD8904AC5DAA1DD263C','3DD77458C9D1C38CF5880E08816CAEFE','66058703','.rela.text.frida_socket_host_session_provider_host_entry_class_init',1416,298615);
INSERT INTO FILE(sha256,sha1,md5,crc32,file_name,file_size,package_id) VALUES('000005A9BB818F8B3493DDCED88D1789679046E84ABE71EC3A79A1ED4DE815E2','30330D39A84E2B7B240F1DD8904AC5DAA1DD263C','3DD77458C9D1C38CF5880E08816CAEFE','66058703','.rela.text.frida_socket_host_session_provider_host_entry_class_init',1416,299558);
INSERT INTO FILE(sha256,sha1,md5,crc32,file_name,file_size,package_id) VALUES('0000070B8C662EABB12B94C87CFD44DF7EA729B92C03B9F2336BA226D0A4D87C','5DF28838F14488AE757A26E8D294B8557F0DDA92','D2D35205949F5DF7D068AE05143CBA1F','3F045301','STRINGSSV.JS',14324,298858);
INSERT INTO FILE(sha256,sha1,md5,crc32,file_name,file_size,package_id) VALUES('0000070B8C662EABB12B94C87CFD44DF7EA729B92C03B9F2336BA226D0A4D87C','5DF28838F14488AE757A26E8D294B8557F0DDA92','D2D35205949F5DF7D068AE05143CBA1F','3F045301','STRINGSSV.JS',14324,298866);

mysql azure-data-factory azure-blob-storage delta
1个回答
0
投票

我希望能够利用复制数据活动来实现这一目标。

复制数据是将数据从文件传输到数据库。它不会执行 MySQL 数据库文件中的 SQL 语句。

为此,您可以在here查看我的答案,以执行从

.sql
文件到Azure MySQL数据库的语句

另一种解决方法可以是从存储帐户 FileShare 将文件导入到 MySQL,如下所示:

导航到门户上的 Azure Database for MySQL 服务器并运行 Azure Cloud Shell (Bash)。如果您第一次运行此命令,它将要求您创建一个存储容器,这将在其中安装一个 Azure 文件.

  • 在 Cloud shell 中输入 df 并收集 Azure 文件路径 enter image description here

  • 上传您在 bash 命令输出中获得的存储帐户文件共享中的 SQL 文件,该文件位于文件系统“cs110032001d078f3ab”下,在 Azure 门户上导航到该文件系统,如下面的屏幕截图所示,然后上传您的 SQL 文件。

enter image description here

  • 使用 cd 命令将目录更改为云驱动器,在下面的示例中我使用了 bash 命令输出中得到的
    cd /usr/csuser/clouddrive
  • 现在您位于该目录中,运行 mysql 命令从 sql 文件加载数据。
$ mysql -h Azuremysql.mysql.database.azure.com -u admin -p database <sqlsample.sql

enter image description here

输出: enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.