mysql 导入自参考 table 跳过记录

mysql import for self reference table skipping records

我正在尝试以编程方式将 table 和数据从一个数据库迁移到另一个数据库。

源数据库和目标数据库是 MySQL。我正在使用 mysql 导入命令从 sqldump 插入数据。我有一个自我相关的table(比如图片table)。每当我为这个 table 执行 mysql 导入时,我都会看到一些记录被跳过。我无法理解它们被跳过的原因,同时尝试了 --verbose 和 --debug 选项,不确定为什么这些选项不起作用。

我尝试了一些东西,

  1. 首先我尝试使用 mysql import 导入数据,我们跳过了 100/209 条记录。 结果 => Records:209 Deleted:0 Skipped:100 Warning:100
  2. 然后我尝试再次导入相同的 sql 转储文件,现在插入了剩余的 100 条记录,跳过了已经插入的 109 条记录。结果 => Records:209 Deleted:0 Skipped:109 Warning:109

我可以在目标数据库中看到 209 条记录 table。

Table 有 related_image 列说明所有图像与该特定 ID 相关的内容。

所以,看起来关系太深了,需要N次才能获取所有记录。有没有办法使用 mysql import 中的某些选项一次插入所有数据?

#!/bin/sh
MYSQLDUMP="mysqldump --login-path=$dest_loc$env"
MYSQLIMPORT="mysqlimport --login-path=$dest_loc$env"
#disable constraints
$MYSQL --database $dest_db -e "ALTER TABLE $table_name DISABLE KEYS; SET FOREIGN_KEY_CHECKS=0;"
#import data
$MYSQLIMPORT --columns "Id, Created, Status, Updated, ImageName, ImageType, MediaType, Sequence, Tag, ReceiptId, RelatedImageId, OriginalCreateDate, ContentLength"  --lines-terminated-by="\n" --fields-terminated-by=',' --fields-optionally-enclosed-by="'" $dest_db $image_dump_source_file
#enable constraints
$MYSQL --database $dest_db -e "SET FOREIGN_KEY_CHECKS=1; ALTER TABLE $table_name ENABLE KEYS;"

我不想重复两次 mysql 导入,不知道在单个命令中导入的方式是什么。

如果有人知道请告诉我。

找到适合我的解决方案

假设 table 中的记录相互依赖,我尝试对 table 进行排序,首先转储子行,然后转储父行。

对于上面的 table,用于按 Related-ID 对记录进行排序,在我的例子中,子记录的 ID 大于父记录。

按 relatedID 排序的行在上图中看起来相同,最后插入 table