Skip to main content

SQL dump 切分SQL

Project description

支持的文件格式

  • gz
  • zip
  • sql

分割 SQL

调用方式

from pathlib import Path

# absolute_file_path 读取文件的绝对路径
# absolute_out_put_folder 输出的文件夹的绝对路径
# 返回的 任务ID
task_id = SliceFactory.slice(absolute_file_path=Path("D:\\workspace\\Resources\\eclinical_edc_prod_21_20230630025243.sql.gz"), 
                   absolute_out_put_folder=Path("YYYYY"))

输出的结果

img.png

YYYYY 输出的文件夹
cdfe5a8a9811459d9b0a940aa86abd89 根据任务 ID 生成的对应文件夹
CREATE 创建 表单的 SQL 语句
INSERT 插入 表单数据的 SQL 语句
file_list.json 生成的文件信息

SQL 文件名的格式:{表名}-{uuid}

获取 SQL 文件信息

# where SQL 文件夹的绝对路径
file_list = FileInfoList(
        where=Path("D:\\aws\\eclinical40_auto_testing\\slicing\\src\\slicing\\XXXX\\89f20cdac717425091fb0fb9220481fe"))

文件信息

sql_type CREATE(创建表单) 或 INSERT(插入数据)
name 文件的全名 {table 或 view 或 index 或 procedure}-{id}
table 表名
id uuid
size 文件大小,单位字节
no SQL 的顺序编号
view 视图名
procedure 存储过程名
index 索引名
operation_object 操作的对象

获取表名

file_list = FileInfoList(where="文件夹的绝对路径")

# FileInfoList.CREATE_LIST  创建表单S表名
# FileInfoList.INSERT_LIST  插入表单数据的表名
# FileInfoList.ALL_LIST     所有创建表单和插入表单数据的表名的交集
file_list.table(mode=FileInfoList.CREATE_LIST)

根据表名获取 文件信息

file_list = FileInfoList(where="文件夹的绝对路径")

# FileInfoList.CREATE_LIST  创建表单的SQL
# FileInfoList.INSERT_LIST  插入表单数据的SQL
# FileInfoList.ALL_LIST     所有创建表单和插入表单数据的所有SQL
# 返回的是一个列表
sqls = file_list.find("eclinical_crf_item", mode=FileInfoList.ALL_LIST)

获取 文件信息

详细例子可查看 tests//file_info_example

file_list = FileInfoList(where="文件夹的绝对路径")

# FileInfoList.CREATE_LIST  创建表单的SQL
# FileInfoList.INSERT_LIST  插入表单数据的SQL
# FileInfoList.ALL_LIST     所有创建表单和插入表单数据的所有SQL
# 返回的是一个列表
sqls = file_list.lists(mode=FileInfoList.INSERT_LIST)

过滤生成

针对大的 Dump 文件,只能支持 过滤 Table 名

详细例子可查看 tests//big_dump_example

# absolute_file_path 读取文件的绝对路径
# absolute_out_put_folder 输出的文件夹的绝对路径
# reader 指定为 
# 返回的 任务ID
 tid = SliceFactory.slice(absolute_file_path=file,
                          absolute_out_put_folder=Path("Result"),
                          reader=DumpReader(tables=["eclinical_study_site"]))

通用过滤

详细列子可查看 tests//custom_filter_exclude_example,custom_filter_include_example,table_filter_example

# absolute_file_path 读取文件的绝对路径
# absolute_out_put_folder 输出的文件夹的绝对路径
# before_condition 在解析 sql 行前过滤
# after_condition 在解析 Sql 行后,生成文件前过滤
# PS,指定after_condition 会比较慢, 但是过滤功能最强

tid = SliceFactory.slice(
        absolute_file_path=file, absolute_out_put_folder=Path("Result"),
        before_condition=DumpTableByteCondition(tables=["eclinical_crf_codelist_item"]),
        after_condition=DumpTableCondition(tables=["eclinical_crf_codelist_item"]))
flowchart LR
    A[before condition 根据文本过滤] --> b[解析 SQL 语句] --> C[after condition 根据属性过滤]

Release 1.0.1

  1. 修改了生成的文件ID和记录的文件ID 不一致的BUG
  2. 在文件信息中,增加了文件大小信息,单位为字节

Release 1.0.2

  1. SliceFactory is_valid_folder_name 修改了正则表达式

Release 1.0.3

  1. 修改了writer结束线程的条件

Release 1.0.4

  1. 添加了序号
  2. 过滤了注释文件
  3. 修改了若干BUG

Release 1.0.5

  1. 增加了支持拆分:存储过程,Alter,Update,Delete,Call,TRUNCATE
  2. 删除了创建语句中自动生成的Drop
  3. 增加了遗漏为处理的日志
  4. 快速在大文件中拆分指定表

Release 1.0.6

  1. 增加了/*!mysqlversion ... */ 的支持

Release 1.0.7

  1. 临时增加了对 Linux的路径支持

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

slicing-1.0.7.tar.gz (19.2 kB view details)

Uploaded Source

Built Distribution

slicing-1.0.7-py3-none-any.whl (34.5 kB view details)

Uploaded Python 3

File details

Details for the file slicing-1.0.7.tar.gz.

File metadata

  • Download URL: slicing-1.0.7.tar.gz
  • Upload date:
  • Size: 19.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.9.13

File hashes

Hashes for slicing-1.0.7.tar.gz
Algorithm Hash digest
SHA256 ca9124cc766f1fe2e0ce0a0402458afab8bb14780a1ae745a835b7807b9e7a1a
MD5 4a7d3dfa98aa7fc425ebbb4ecb43d843
BLAKE2b-256 15d3e19c346f6305fc58fa5ad834821dd6572e148563a1d06782ca68c4cdaf26

See more details on using hashes here.

File details

Details for the file slicing-1.0.7-py3-none-any.whl.

File metadata

  • Download URL: slicing-1.0.7-py3-none-any.whl
  • Upload date:
  • Size: 34.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.9.13

File hashes

Hashes for slicing-1.0.7-py3-none-any.whl
Algorithm Hash digest
SHA256 b92202738335a2f57160caa2541710b63a45edca1f25e92fc9fb1c976427cd28
MD5 26a9d735c483641edaef04005551296e
BLAKE2b-256 285d4caf7880b9878b9098607831c85ce0bcbde5613434daf9fc09d93a5788ff

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page