HARD 正则表达式 SQLLdr 控制文件,也许是正则表达式,也许是熊猫,也许是别的东西

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

https://docs.oracle.com/database/121/SUTIL/GUID-AEBA1A45-2394-4947-81CB-37CD99BA5BA9.htm

我在获取每个表和每个字段时遇到问题

这是我的 sql,我不知道如何废弃所有表。我只能让一些表被废弃……我不是它的开发者……我是 只是想帮助也不是开发人员的其他人...

我只是想把它变成excel ...

一个 json 或一个 CSV 就可以了...... 使用正则表达式,随便

我很绝望我不知道如何解决这个问题

这是 Oracle SQLLdr,

请帮助我这两周一直在尝试无数的事情。我正在寻求帮助

我不能像这样废弃两种不同类型的桌子


INTO TABLE FUSION.CSE_INT_BATCHES_TL
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' TRAILING NULLCOLS
(   INTERFACE_BATCH_ID                        POSITION(1) "FUSION.CSE_LOAD_INTERFACE_UTILS_PKG.get_batch_id(:INTERFACE_BATCH_ID)"
,   INTERFACE_BATCH_NAME
,   INTERFACE_BATCH_DESCRIPTION
,   SOURCE_SYSTEM_TYPE                        FILLER
,   SOURCE_SYSTEM_CODE                        FILLER

APPEND
INTO TABLE DOO_ORDER_CHARGE_TIERS_INT 
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' 
TRAILING NULLCOLS
(
SOURCE_TRANSACTION_ID           CHAR(50),
SOURCE_TRANSACTION_SYSTEM       CHAR(30),
SOURCE_TRANSACTION_LINE_ID      CHAR(50),
SOURCE_TRANSACTION_SCHEDULE_ID  CHAR(50),
SOURCE_CHARGE_ID                CHAR(120),

sql_code = re.sub(r'--.*\n', '', sql_code)

# Remove lines starting with FIELDS
sql_code = re.sub(r'FIELDS.*\n', '', sql_code)

# Regular expression to find tables and fields
tables_pattern = re.compile(r'\bINTO TABLE (\w+)')
fields_pattern = re.compile(r'\n,?(\w+)([^,\n(]*)(\(.*?\))?', re.MULTILINE)

# Extract tables
tables = tables_pattern.findall(sql_code)

# Extract fields and their types
fields = {}
for table in tables:
    table_start = re.search(fr'\bINTO TABLE {table}', sql_code)
    table_end = re.search(r'\n\)', sql_code[table_start.end():]).start()
    table_fields = fields_pattern.findall(sql_code[table_start.end():table_start.end() + table_end])
    fields[table] = [{'name': field[0], 'type': field[1].strip() + field[2]} for field in table_fields]

print("Tables and their fields:")
for table, table_fields in fields.items():
    print(f"Table {table}:")
    for field in table_fields:
        print(f"- {field['name']}")


sql_code = '\nLOAD DATA\nappend\n\nINTO TABLE PO_DISTRIBUTIONS_INTERFACE\nfields terminated by \',\' optionally enclosed by \'"\' trailing nullcols\n(INTERFACE_DISTRIBUTION_ID \texpression "po_distributions_interface_s.nextval"\n,CREATION_DATE                  expression "current_timestamp(1)"\n,LAST_UPDATE_DATE               expression "current_timestamp(1)"\n,CREATED_BY                   \tconstant \'#CREATEDBY#\'\n,LAST_UPDATED_BY               \tconstant \'#LASTUPDATEDBY#\'\n,LAST_UPDATE_LOGIN             \tconstant \'#LASTUPDATELOGIN#\'\n,LOAD_REQUEST_ID        \tconstant \'#LOADREQUESTID#\'\n,OBJECT_VERSION_NUMBER    \tconstant 1\n--,CREATED_BY                     constant 1\n--,LAST_UPDATED_BY                constant 1\n--,LAST_UPDATE_LOGIN              constant 1\n--,LOAD_REQUEST_ID                constant 1\n,INTERFACE_DISTRIBUTION_KEY\n,INTERFACE_LINE_LOCATION_KEY\n,DISTRIBUTION_NUM\n,DELIVER_TO_LOCATION                                                                                                                                                                          \n,DELIVER_TO_PERSON_FULL_NAME    char(2000)            \n,DESTINATION_SUBINVENTORY\n,AMOUNT_ORDERED\t\t\t"fun_load_interface_utils_pkg.replace_decimal_char(:AMOUNT_ORDERED)"\n,SHIPPING_UOM_QUANTITY\t\t"fun_load_interface_utils_pkg.replace_decimal_char(:SHIPPING_UOM_QUANTITY)"\n,CHARGE_ACCOUNT_SEGMENT1                                                                                                                                                                                                                                                                                                                                                        \n,CHARGE_ACCOUNT_SEGMENT2                                                                                                                                                                                                                                                                                                                                                         \n,ATTRIBUTE_TIMESTAMP8\t\t"to_timestamp(:ATTRIBUTE_TIMESTAMP8, \'YYYY/MM/DD HH24:MI:SS:FF\')"\n,ATTRIBUTE_TIMESTAMP9\t\t"to_timestamp(:ATTRIBUTE_TIMESTAMP9, \'YYYY/MM/DD HH24:MI:SS:FF\')"\n,ATTRIBUTE_TIMESTAMP10\t\t"to_timestamp(:ATTRIBUTE_TIMESTAMP10, \'YYYY/MM/DD HH24:MI:SS:FF\')"\n,DELIVER_TO_PERSON_EMAIL_ADDR\n,BUDGET_DATE\t\t\t"to_date(:BUDGET_DATE, \'YYYY/MM/DD\')"\n,PJC_CONTRACT_NUMBER\n,PJC_FUNDING_SOURCE             char(360)\n,GLOBAL_ATTRIBUTE1              char(150)\n)\n-- +=========================================================================+\n-- | $Header: fusionapps/scm/doo/bin/DooOrderChargeTiersInt.ctl /st_fusionapps_pt-v2mib/1 2021/03/02 19:28:40 nveluthe Exp $ |\n-- +=========================================================================+\n-- | Copyright (c) 2014 Oracle Corporation Redwood City, California, USA     |\n-- | All rights reserved.                                                    |\n-- |=========================================================================+\n-- |\n-- | FILENAME\n-- |   DooOrderChargeTiersInt.ctl\n-- |\n-- | DESCRIPTION\n-- |   Uploads CSV file data into DOO_ORDER_CHARGE_TIERS_INT table\n-- |\n-- | Created by\n-- |   akpanigr\n-- |\n-- | History\n-- |   01/20/2021  Initial Version\n-- | \n\nLOAD DATA LENGTH SEMANTICS CHARACTER\n--INFILE \'DooOrderChargeTiersInt.csv\'\n--BADFILE \'DooOrderChargeTiersInt.bad\'\n--DISCARDFILE \'DooOrderChargeTiersInt.dsc\'\nAPPEND\nINTO TABLE DOO_ORDER_CHARGE_TIERS_INT \nFIELDS TERMINATED BY \',\' OPTIONALLY ENCLOSED BY \'"\' \nTRAILING NULLCOLS\n(\nSOURCE_TRANSACTION_ID           CHAR(50),\nSOURCE_TRANSACTION_SYSTEM       CHAR(30),\nSOURCE_TRANSACTION_LINE_ID      CHAR(50),\nSOURCE_TRANSACTION_SCHEDULE_ID  CHAR(50),\nSOURCE_CHARGE_ID                CHAR(120),\nSOURCE_ORDER_CHARGE_TIER_ID     CHAR(50),\nTIER_SEQUENCE_NUMBER            "fun_load_interface_utils_pkg.replace_decimal_char(:TIER_SEQUENCE_NUMBER)",\nAPPLICATION_METHOD_CODE         CHAR(30),\nAPPLICATION_METHOD              CHAR(80),\nTIER_FROM                       "fun_load_interface_utils_pkg.replace_decimal_char(:TIER_FROM)",\nTIER_TO                         "fun_load_interface_utils_pkg.replace_decimal_char(:TIER_TO)",\nBLOCK_SIZE                      "fun_load_interface_utils_pkg.replace_decimal_char(:BLOCK_SIZE)",\nADJUSTMENT_AMOUNT               "fun_load_interface_utils_pkg.replace_decimal_char(:ADJUSTMENT_AMOUNT)",\nCREATION_DATE                   expression            "systimestamp",\nCREATED_BY                      CONSTANT              \'#CREATEDBY#\',\nLAST_UPDATE_DATE                expression            "systimestamp",\nLAST_UPDATED_BY                 CONSTANT              \'#LASTUPDATEDBY#\',\nLAST_UPDATE_LOGIN               CONSTANT              \'#LASTUPDATELOGIN#\',\nOBJECT_VERSION_NUMBER           CONSTANT              1,\nLOAD_REQUEST_ID                 CONSTANT              \'#LOADREQUESTID#\'\n)\n-- Controller to load data from csv file to CSE_INT_BATCHES_B and TL table.\nOPTIONS(ROWS=1)\nLOAD DATA\nINFILE \'CseAssetBatches.csv\'\nBADFILE \'CseAssetBatches.bad\'\nDISCARDFILE \'CseAssetBatches.dsc\'\n\nAPPEND\nINTO TABLE FUSION.CSE_INT_BATCHES_B\nFIELDS TERMINATED BY \',\' OPTIONALLY ENCLOSED BY \'"\' TRAILING NULLCOLS\n(\tINTERFACE_BATCH_CODE \n,\tDUMMYCOL1                                  FILLER\n,\tDUMMYCOL2                                  FILLER\n,\tSOURCE_SYSTEM_TYPE                         "DECODE(:SOURCE_SYSTEM_TYPE, null, \'ORA_INTERNAL\', :SOURCE_SYSTEM_TYPE)" \n,\tSOURCE_SYSTEM_CODE                         "DECODE(:SOURCE_SYSTEM_CODE, null, \'MNT\', :SOURCE_SYSTEM_CODE)"\n,   SOURCE_TRANSACTION_DATE                    "FUSION.CSE_LOAD_INTERFACE_UTILS_PKG.CONVERT_TIMESTAMP(:SOURCE_TRANSACTION_DATE)"\n,\tATTRIBUTE_CATEGORY \n,\tATTRIBUTE_CHAR1    \n,\tATTRIBUTE_CHAR2    \n,\tATTRIBUTE_CHAR3    \n,\tATTRIBUTE_CHAR4    \n,\tATTRIBUTE_NUMBER8  \n,\tATTRIBUTE_NUMBER9  \n,\tATTRIBUTE_NUMBER10 \n,\tATTRIBUTE_DATE1                           "to_date(:ATTRIBUTE_DATE1, \'YYYY/MM/DD\')"\n,\tATTRIBUTE_DATE2                           "to_date(:ATTRIBUTE_DATE2, \'YYYY/MM/DD\')"\n,\tATTRIBUTE_DATE3                           "to_date(:ATTRIBUTE_DATE3, \'YYYY/MM/DD\')"\n,\tATTRIBUTE_DATE4                           "to_date(:ATTRIBUTE_DATE4, \'YYYY/MM/DD\')"\n,\tATTRIBUTE_DATE5                           "to_date(:ATTRIBUTE_DATE5, \'YYYY/MM/DD\')"\n,\tATTRIBUTE_TIMESTAMP1                      "FUSION.CSE_LOAD_INTERFACE_UTILS_PKG.CONVERT_TIMESTAMP(:ATTRIBUTE_TIMESTAMP1)"\n,\tATTRIBUTE_TIMESTAMP2                      "FUSION.CSE_LOAD_INTERFACE_UTILS_PKG.CONVERT_TIMESTAMP(:ATTRIBUTE_TIMESTAMP2)"\n,\tATTRIBUTE_TIMESTAMP3                      "FUSION.CSE_LOAD_INTERFACE_UTILS_PKG.CONVERT_TIMESTAMP(:ATTRIBUTE_TIMESTAMP3)"\n,\tATTRIBUTE_TIMESTAMP4                      "FUSION.CSE_LOAD_INTERFACE_UTILS_PKG.CONVERT_TIMESTAMP(:ATTRIBUTE_TIMESTAMP4)"\n,\tATTRIBUTE_TIMESTAMP5                      "FUSION.CSE_LOAD_INTERFACE_UTILS_PKG.CONVERT_TIMESTAMP(:ATTRIBUTE_TIMESTAMP5)"\n,\tCREATED_BY                                 CONSTANT    \'#CREATEDBY#\'\n,\tCREATION_DATE                              EXPRESSION  "SYSTIMESTAMP"\n,\tLAST_UPDATED_BY                            CONSTANT    \'#LASTUPDATEDBY#\'\n,\tLAST_UPDATE_DATE                           EXPRESSION  "SYSTIMESTAMP"\n,\tINTERNAL_BATCH_TYPE                        CONSTANT    \'IB\'\n,\tLOAD_REQUEST_ID                            CONSTANT    \'#LOADREQUESTID#\'\n)\n\nINTO TABLE FUSION.CSE_INT_BATCHES_TL\nFIELDS TERMINATED BY \',\' OPTIONALLY ENCLOSED BY \'"\' TRAILING NULLCOLS\n(   INTERFACE_BATCH_ID                        POSITION(1) "FUSION.CSE_LOAD_INTERFACE_UTILS_PKG.get_batch_id(:INTERFACE_BATCH_ID)"\n,\tINTERFACE_BATCH_NAME\n,\tINTERFACE_BATCH_DESCRIPTION\n,\tSOURCE_SYSTEM_TYPE                        FILLER\n,\tSOURCE_SYSTEM_CODE                        FILLER\n,\tATTRIBUTE_CATEGORY                        FILLER\n,\tATTRIBUTE_CHAR1                           FILLER\n,\tOBJECT_VERSION_NUMBER                     CONSTANT   1\n,\tCREATED_BY                                CONSTANT   \'#CREATEDBY#\'\n,\tCREATION_DATE                             EXPRESSION "SYSTIMESTAMP"\n,\tLAST_UPDATED_BY                           CONSTANT   \'#LASTUPDATEDBY#\'\n,\tLAST_UPDATE_DATE                          EXPRESSION "SYSTIMESTAMP"\n,\tLAST_UPDATE_LOGIN                         CONSTANT   \'#LASTUPDATELOGIN#\'\n,\tLOAD_REQUEST_ID                           CONSTANT   \'#LOADREQUESTID#\'\n)\n\n'

像这样

- fields
- CREATION_DATE
- LAST_UPDATE_DATE
- CREATED_BY
- LAST_UPDATED_BY
- LAST_UPDATE_LOGIN
- LOAD_REQUEST_ID
- OBJECT_VERSION_NUMBER
- INTERFACE_DISTRIBUTION_KEY
- INTERFACE_LINE_LOCATION_KEY
- DISTRIBUTION_NUM
- DELIVER_TO_LOCATION
- DELIVER_TO_PERSON_FULL_NAME
- DESTINATION_SUBINVENTORY
- AMOUNT_ORDERED
- SHIPPING_UOM_QUANTITY
- CHARGE_ACCOUNT_SEGMENT1
- CHARGE_ACCOUNT_SEGMENT2
- ATTRIBUTE_TIMESTAMP8
- ATTRIBUTE_TIMESTAMP9
- ATTRIBUTE_TIMESTAMP10
- DELIVER_TO_PERSON_EMAIL_ADDR
- BUDGET_DATE
- PJC_CONTRACT_NUMBER
- PJC_FUNDING_SOURCE
- GLOBAL_ATTRIBUTE1
Table DOO_ORDER_CHARGE_TIERS_INT:
- TRAILING
- SOURCE_TRANSACTION_ID
- SOURCE_TRANSACTION_SYSTEM
- SOURCE_TRANSACTION_LINE_ID
- SOURCE_TRANSACTION_SCHEDULE_ID
- SOURCE_CHARGE_ID
- SOURCE_ORDER_CHARGE_TIER_ID
- TIER_SEQUENCE_NUMBER
- APPLICATION_METHOD_CODE
- APPLICATION_METHOD
- TIER_FROM
- TIER_TO
- BLOCK_SIZE
- ADJUSTMENT_AMOUNT
- CREATION_DATE
- CREATED_BY
- LAST_UPDATE_DATE
- LAST_UPDATED_BY
- LAST_UPDATE_LOGIN
- OBJECT_VERSION_NUMBER
- LOAD_REQUEST_ID```
python regex oracle grep antlr
© www.soinside.com 2019 - 2024. All rights reserved.