2025-08-20 13:51:33,923 [ERROR] Error parsing `changeLogs/health-service/create_db.sql`: Expecting ). Line 19, Col: 26.
created_at`) USING BTREE
) PARTITION BY RANGE ( UNIX_TIMESTAMP(audit_ts)) (
PARTITION p2401 VALUES LESS THAN (UNIX_TIMESTAMP('2024-02-01 00:00:00')),
PARTITION p2402 VALUES LESS THAN (UNIX_TIMES
2025-08-20 13:51:33,923 [INFO] Total unique tables found: 0
2025-08-20 13:51:33,923 [INFO] Table names: []
< /code>
Мой код питона похож на ниже < /p>
import logging
import sqlglot
from sqlglot import exp
# Configure logger
logging.basicConfig(
level=logging.INFO,
format="%(asctime)s [%(levelname)s] %(message)s"
)
logger = logging.getLogger(__name__)
def extract_table_names(sql_file_path, dialect="mysql"):
"""
Parse the SQL file and return a set of unique table names found.
Logs errors if file not found or parsing fails.
"""
try:
with open(sql_file_path, "r") as f:
sql_script = f.read()
expression_trees = sqlglot.parse(sql_script, dialect=dialect)
table_names = set()
for tree in expression_trees:
table_names.update([table.name for table in tree.find_all(exp.Table)])
return table_names
except FileNotFoundError:
logger.error(f"File not found: {sql_file_path}")
return set()
except Exception as e:
logger.error(f"Error parsing `{sql_file_path}`: {e}")
return set()
if __name__ == "__main__":
sql_file = "changeLogs/health-service/create_db.sql"
tables = extract_table_names(sql_file)
logger.info(f"Total unique tables found: {len(tables)}")
logger.info(f"Table names: {sorted(list(tables))}")
< /code>
Мой файл SQL похож на ниже < /p>
-- liquibase formatted sql
-- changeset debraj.manna@nexla.com:NEX-18235
CREATE TABLE IF NOT EXISTS `audit_control`
(
`id` BIGINT auto_increment NOT NULL,
`message_id` VARCHAR(100) DEFAULT NULL,
`resource_type` VARCHAR(30) NOT NULL,
`event_type` VARCHAR(30) NOT NULL,
`resource_id` INT NOT NULL,
`origin` VARCHAR(100) NOT NULL,
`created_at` TIMESTAMP NOT NULL,
`body` mediumtext NOT NULL,
`audit_ts` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (id, audit_ts),
KEY `audit_control_resource_type_resource_id_IDX` (`resource_type`,`resource_id`) USING BTREE,
KEY `audit_control_created_at_IDX` (`created_at`) USING BTREE
) PARTITION BY RANGE ( UNIX_TIMESTAMP(audit_ts)) (
PARTITION p2401 VALUES LESS THAN (UNIX_TIMESTAMP('2024-02-01 00:00:00')),
PARTITION p2402 VALUES LESS THAN (UNIX_TIMESTAMP('2024-03-01 00:00:00')),
PARTITION p2403 VALUES LESS THAN (UNIX_TIMESTAMP('2024-04-01 00:00:00')),
PARTITION p2404 VALUES LESS THAN (UNIX_TIMESTAMP('2024-05-01 00:00:00')),
PARTITION p2405 VALUES LESS THAN (UNIX_TIMESTAMP('2024-06-01 00:00:00')),
PARTITION p2406 VALUES LESS THAN (UNIX_TIMESTAMP('2024-07-01 00:00:00')),
PARTITION p2407 VALUES LESS THAN (UNIX_TIMESTAMP('2024-08-01 00:00:00')),
PARTITION p2408 VALUES LESS THAN (UNIX_TIMESTAMP('2024-09-01 00:00:00')),
PARTITION p2409 VALUES LESS THAN (UNIX_TIMESTAMP('2024-10-01 00:00:00')),
PARTITION p2410 VALUES LESS THAN (UNIX_TIMESTAMP('2024-11-01 00:00:00')),
PARTITION p2411 VALUES LESS THAN (UNIX_TIMESTAMP('2024-12-01 00:00:00')),
PARTITION p2412 VALUES LESS THAN (UNIX_TIMESTAMP('2025-01-01 00:00:00')),
PARTITION pN VALUES LESS THAN MAXVALUE
);
CREATE TABLE IF NOT EXISTS `audit_coordination`
(
`id` BIGINT auto_increment NOT NULL,
`message_id` VARCHAR(100) DEFAULT NULL,
`event_type` VARCHAR(30) NOT NULL,
`created_at` TIMESTAMP NOT NULL,
`body` TEXT NOT NULL,
`audit_ts` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (id, audit_ts)
) PARTITION BY RANGE ( UNIX_TIMESTAMP(audit_ts)) (
PARTITION p2401 VALUES LESS THAN (UNIX_TIMESTAMP('2024-02-01 00:00:00')),
PARTITION p2402 VALUES LESS THAN (UNIX_TIMESTAMP('2024-03-01 00:00:00')),
PARTITION p2403 VALUES LESS THAN (UNIX_TIMESTAMP('2024-04-01 00:00:00')),
PARTITION p2404 VALUES LESS THAN (UNIX_TIMESTAMP('2024-05-01 00:00:00')),
PARTITION p2405 VALUES LESS THAN (UNIX_TIMESTAMP('2024-06-01 00:00:00')),
PARTITION p2406 VALUES LESS THAN (UNIX_TIMESTAMP('2024-07-01 00:00:00')),
PARTITION p2407 VALUES LESS THAN (UNIX_TIMESTAMP('2024-08-01 00:00:00')),
PARTITION p2408 VALUES LESS THAN (UNIX_TIMESTAMP('2024-09-01 00:00:00')),
PARTITION p2409 VALUES LESS THAN (UNIX_TIMESTAMP('2024-10-01 00:00:00')),
PARTITION p2410 VALUES LESS THAN (UNIX_TIMESTAMP('2024-11-01 00:00:00')),
PARTITION p2411 VALUES LESS THAN (UNIX_TIMESTAMP('2024-12-01 00:00:00')),
PARTITION p2412 VALUES LESS THAN (UNIX_TIMESTAMP('2025-01-01 00:00:00')),
PARTITION pN VALUES LESS THAN MAXVALUE
);
может кто -нибудь сообщить мне, если это ожидается, и sqlglot не поддерживает раздел ?
Я пытаюсь прочитать mysql sql файл, содержащий раздел . Я получаю приведенную ниже ошибку < /p> [code]2025-08-20 13:51:33,923 [ERROR] Error parsing `changeLogs/health-service/create_db.sql`: Expecting ). Line 19, Col: 26. created_at`) USING BTREE ) PARTITION BY RANGE ( UNIX_TIMESTAMP(audit_ts)) ( PARTITION p2401 VALUES LESS THAN (UNIX_TIMESTAMP('2024-02-01 00:00:00')), PARTITION p2402 VALUES LESS THAN (UNIX_TIMES 2025-08-20 13:51:33,923 [INFO] Total unique tables found: 0 2025-08-20 13:51:33,923 [INFO] Table names: [] < /code> Мой код питона похож на ниже < /p> import logging import sqlglot from sqlglot import exp
def extract_table_names(sql_file_path, dialect="mysql"): """ Parse the SQL file and return a set of unique table names found. Logs errors if file not found or parsing fails. """ try: with open(sql_file_path, "r") as f: sql_script = f.read()
expression_trees = sqlglot.parse(sql_script, dialect=dialect) table_names = set() for tree in expression_trees: table_names.update([table.name for table in tree.find_all(exp.Table)]) return table_names except FileNotFoundError: logger.error(f"File not found: {sql_file_path}") return set() except Exception as e: logger.error(f"Error parsing `{sql_file_path}`: {e}") return set()
if __name__ == "__main__": sql_file = "changeLogs/health-service/create_db.sql" tables = extract_table_names(sql_file)
-- changeset debraj.manna@nexla.com:NEX-18235 CREATE TABLE IF NOT EXISTS `audit_control` ( `id` BIGINT auto_increment NOT NULL, `message_id` VARCHAR(100) DEFAULT NULL, `resource_type` VARCHAR(30) NOT NULL, `event_type` VARCHAR(30) NOT NULL, `resource_id` INT NOT NULL, `origin` VARCHAR(100) NOT NULL, `created_at` TIMESTAMP NOT NULL, `body` mediumtext NOT NULL, `audit_ts` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (id, audit_ts), KEY `audit_control_resource_type_resource_id_IDX` (`resource_type`,`resource_id`) USING BTREE, KEY `audit_control_created_at_IDX` (`created_at`) USING BTREE ) PARTITION BY RANGE ( UNIX_TIMESTAMP(audit_ts)) ( PARTITION p2401 VALUES LESS THAN (UNIX_TIMESTAMP('2024-02-01 00:00:00')), PARTITION p2402 VALUES LESS THAN (UNIX_TIMESTAMP('2024-03-01 00:00:00')), PARTITION p2403 VALUES LESS THAN (UNIX_TIMESTAMP('2024-04-01 00:00:00')), PARTITION p2404 VALUES LESS THAN (UNIX_TIMESTAMP('2024-05-01 00:00:00')), PARTITION p2405 VALUES LESS THAN (UNIX_TIMESTAMP('2024-06-01 00:00:00')), PARTITION p2406 VALUES LESS THAN (UNIX_TIMESTAMP('2024-07-01 00:00:00')), PARTITION p2407 VALUES LESS THAN (UNIX_TIMESTAMP('2024-08-01 00:00:00')), PARTITION p2408 VALUES LESS THAN (UNIX_TIMESTAMP('2024-09-01 00:00:00')), PARTITION p2409 VALUES LESS THAN (UNIX_TIMESTAMP('2024-10-01 00:00:00')), PARTITION p2410 VALUES LESS THAN (UNIX_TIMESTAMP('2024-11-01 00:00:00')), PARTITION p2411 VALUES LESS THAN (UNIX_TIMESTAMP('2024-12-01 00:00:00')), PARTITION p2412 VALUES LESS THAN (UNIX_TIMESTAMP('2025-01-01 00:00:00')), PARTITION pN VALUES LESS THAN MAXVALUE );
CREATE TABLE IF NOT EXISTS `audit_coordination` ( `id` BIGINT auto_increment NOT NULL, `message_id` VARCHAR(100) DEFAULT NULL, `event_type` VARCHAR(30) NOT NULL, `created_at` TIMESTAMP NOT NULL, `body` TEXT NOT NULL, `audit_ts` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (id, audit_ts) ) PARTITION BY RANGE ( UNIX_TIMESTAMP(audit_ts)) ( PARTITION p2401 VALUES LESS THAN (UNIX_TIMESTAMP('2024-02-01 00:00:00')), PARTITION p2402 VALUES LESS THAN (UNIX_TIMESTAMP('2024-03-01 00:00:00')), PARTITION p2403 VALUES LESS THAN (UNIX_TIMESTAMP('2024-04-01 00:00:00')), PARTITION p2404 VALUES LESS THAN (UNIX_TIMESTAMP('2024-05-01 00:00:00')), PARTITION p2405 VALUES LESS THAN (UNIX_TIMESTAMP('2024-06-01 00:00:00')), PARTITION p2406 VALUES LESS THAN (UNIX_TIMESTAMP('2024-07-01 00:00:00')), PARTITION p2407 VALUES LESS THAN (UNIX_TIMESTAMP('2024-08-01 00:00:00')), PARTITION p2408 VALUES LESS THAN (UNIX_TIMESTAMP('2024-09-01 00:00:00')), PARTITION p2409 VALUES LESS THAN (UNIX_TIMESTAMP('2024-10-01 00:00:00')), PARTITION p2410 VALUES LESS THAN (UNIX_TIMESTAMP('2024-11-01 00:00:00')), PARTITION p2411 VALUES LESS THAN (UNIX_TIMESTAMP('2024-12-01 00:00:00')), PARTITION p2412 VALUES LESS THAN (UNIX_TIMESTAMP('2025-01-01 00:00:00')), PARTITION pN VALUES LESS THAN MAXVALUE ); [/code] может кто -нибудь сообщить мне, если это ожидается, и sqlglot не поддерживает раздел ? [list] [*] sqlglot = 27.8.0 [*] python = 3.9.6 [/list] >