diff --git a/src/connectors/mysql_connector.py b/src/connectors/mysql_connector.py index e29c368..f94341a 100644 --- a/src/connectors/mysql_connector.py +++ b/src/connectors/mysql_connector.py @@ -244,6 +244,9 @@ class MySQLConnector: if batch_size is None: batch_size = self.settings.migration.batch_size + # Determine the ID column name based on table + id_column = "idElabData" if table == "ELABDATADISP" else "id" + last_id = start_id max_retries = 3 @@ -255,10 +258,10 @@ class MySQLConnector: # Use keyset pagination: fetch by id > last_id # This is much more efficient than OFFSET for large tables if last_id is None: - query = f"SELECT * FROM `{table}` ORDER BY `id` ASC LIMIT %s" + query = f"SELECT * FROM `{table}` ORDER BY `{id_column}` ASC LIMIT %s" cursor.execute(query, (batch_size,)) else: - query = f"SELECT * FROM `{table}` WHERE `id` > %s ORDER BY `id` ASC LIMIT %s" + query = f"SELECT * FROM `{table}` WHERE `{id_column}` > %s ORDER BY `{id_column}` ASC LIMIT %s" cursor.execute(query, (last_id, batch_size)) rows = cursor.fetchall() @@ -267,7 +270,7 @@ class MySQLConnector: return yield rows - last_id = rows[-1]["id"] + last_id = rows[-1][id_column] break # Success, exit retry loop except pymysql.Error as e: