Oracle LiveLabs实验:Load and Analyze Your Data with Autonomous Database

news2025/1/13 14:19:53

概述

本研讨会中的实验将引导您完成开始使用 Oracle 自治数据库的所有步骤。 首先,您将创建一个 Oracle 自治数据库实例。 然后,您将练习使用自治数据库工具和 API 从不同位置以不同格式加载数据的几种方法。 您将使用 SQL 分析数据并使用 Oracle Analytics Cloud 构建分析仪表板。

此实验申请地址在这里。

实验帮助在这里。

此实验预估完成时间90分钟。如果不包括实验5:数据可视化,我用了2个小时。

本实验的作者为Nilay Panchal,贡献者为Richard Green。

Oracle MovieStream 是一种虚构的电影流服务 - 类似于您当前订阅的服务。 他们面临着许多跨行业组织所面临的典型挑战。 MovieStream 必须:

  • 更好地了解他们的客户,以确保他们喜欢这项服务
  • 以合适的价格向合适的客户提供合适的产品
  • 发展业务,成为流媒体业务的主导者

Oracle 云提供的平台,可以高效地交付安全、有洞察力、可扩展和高性能的解决方案。 MovieStream 利用 Oracle 自治数据库和 Oracle 云基础设施 (OCI) 数据湖服务设计了他们的解决方案。他们的数据架构遵循 Oracle 参考架构企业数据仓库 - 一个集成数据湖。回顾架构是值得的,这样您就可以了解集成数据湖和数据仓库的价值 - 因为它使您能够使用所有数据回答更复杂的问题。

在本次研讨会中,我们将从 MovieStream 架构的两个关键组件开始。 MovieStream 正在跨 Oracle 对象存储和自治数据库存储他们的数据。数据从各种来源捕获到对象存储中的着陆区。然后对这些数据进行处理(清理、转换和优化)并存储在对象存储的黄金区域中。整理数据后,将其加载到自治数据库中,由用户社区的许多(和不同的)成员进行分析。
在这里插入图片描述

研讨会目标

  • 供应新的 Oracle 自治数据库实例
  • 从本地计算机上的文件加载数据
  • 从对象存储桶加载数据
  • 使用 Oracle Analytics Cloud 从您的数据集中创建引人注目的仪表板
  • 加载和分析 JSON 集合
  • 从公共 REST 服务加载最新消息并运行该消息的情绪分析

实验 1:创建 Oracle 自治数据库实例

本实验室将引导您完成开始使用 Oracle 云上的 Oracle 自治数据库(自治数据仓库 [ADW] 或自治事务处理 [ATP]都可以。)的步骤。 在本实验中,您将预配一个新的 ADW 实例。

创建一个Shared Infrastructure下的ADW。

  • OCPU count : 1 (默认)
  • Storage (TB) : 1 (默认)
  • Auto Scaling:勾选 (默认)
  • network access:Secure access from everywhere

服务供应时间如下,耗时40秒:

Mon, Nov 21, 2022, 08:32:33 UTC	到 Mon, Nov 21, 2022, 08:33:13 UTC

自治数据仓库的典型工作流程的文档见这里。

实验 2:使用免费样本数据集

在本实验中,您将使用 SQL 工作表探索 Oracle 自治数据仓库 (ADW) 或自治事务处理 (ATP) 实例随附的示例数据集。

本实验使用 SQL 工作表,它是 Oracle 自治数据库的数据库操作基于 Web 的界面的功能之一。

本实验将演示对 ADW 开箱即用提供的示例数据集的查询。 ADW 提供 Oracle 销售历史示例模式星型模式基准 (SSB) 数据集。 这些数据集分别位于 SH 和 SSB 模式中。

您将对 SSB 数据集运行基本查询,该数据集是一个 1 TB 的数据集,其中包含一个包含大约 60 亿行的事实表和几个维度表。

任务 1:连接 SQL Worksheet

Database Action菜单,以ADMIN用户登录。在Development部分,单击SQL。

任务 2:在 SQL Worksheet 中运行脚本

在SQL Worksheet中输入以下SQL并运行:

select /* low */ c_city,c_region,count(*)
from ssb.customer c_low
group by c_region, c_city
order by count(*);

如果可能,ADW 还会为您缓存查询结果。 如果您多次运行相同的查询,您会注意到结果被缓存后的响应时间要短得多。以下为第1次到第5次运行的时间。

Execution time: 0.221 seconds
Execution time: 0.008 seconds
Execution time: 0.008 seconds
Execution time: 0.009 seconds
Execution time: 0.008 seconds

实验 3:加载数据

介绍

在本实验中,您将使用本地文件系统中的示例数据创建和加载 Oracle 自治数据库表,将文件上传到 Oracle 云基础设施 (OCI) 对象存储,使用 OCI 对象存储上的文件中的数据创建和加载表 , 并对有错误的数据加载进行故障排除。

您可以使用 Oracle 数据库工具以及 Oracle 和第三方数据集成工具将数据加载到新的 Oracle 自治数据库(Oracle 自治数据仓库 [ADW] 或 Oracle 自治事务处理 [ATP])中。 您可以从以下数据源加载数据:

  • 来自本地设备中的文件,或
  • 来自远程数据库中的表,或
  • 从存储在基于云的对象存储(Oracle、S3、Azure、Google)中的文件

预计时间:30 分钟

目标

  • 了解如何使用本地文件系统中的示例数据创建和加载 ADW 表
  • 了解如何将文件上传到 OCI 对象存储
  • 了解如何为您的自治数据库定义对象存储凭据
  • 了解如何从对象存储加载数据
  • 了解如何解决数据加载问题

任务 1:下载示例数据以从本地文件加载

您需要将包含 CHANNELS 信息的 .csv 文件下载到本地计算机,然后在下一个任务中使用它来填充 ADW 数据库中的 CHANNELS_LOCAL 表。 单击此链接下载示例 channels.csv 文件并将其保存到本地计算机上的目录中。此文件约1KB。

任务 2:使用数据库操作数据加载工具加载本地数据

Database Actions菜单,ADMIN用户登录,Data Tools 部分, 单击 DATA LOAD和LOCAL FILE,单击“下一步”,然后选择刚刚下载的文件。最后选择Run。

这个目标表是在加载时创建的,之前并没有。

Name             Null? Type         
---------------- ----- ------------ 
CHANNEL_ID             NUMBER       
CHANNEL_DESC           VARCHAR2(64) 
CHANNEL_CLASS          VARCHAR2(64) 
CHANNEL_CLASS_ID       NUMBER       
CHANNEL_TOTAL          VARCHAR2(64) 
CHANNEL_TOTAL_ID       NUMBER       

任务 3:下载用于暂存到对象存储的示例数据

现在,您将下载一个 zip 文件,其中包含您将暂存到 OCI 对象存储的数据文件,以便在以后的任务中填充多个表。

单击此处下载示例源文件的 zip 文件并解压,此文件约6MB。

任务 4:导航到对象存储并创建存储桶

在OCI Console中,进入Object Storage服务并创建bucket。bucket的名称在整个租户内必须唯一。

任务 5:将文件上传到您的 OCI 对象存储桶

解压刚下载的文件并上传,可以批量上传。

任务 6:找到对象存储基 URL

获取此 URL 的最简单方法是单击对象存储中任何已上传文件右侧的省略号菜单中的View Object Details。
类似于linux中的dirname,之后会作为参数Bucket URI:

$ dirname https://objectstorage.ap-seoul-1.oraclecloud.com/n/c4u04/b/bucket-20221121-1704-ADW/o/chan_v3.dat
https://objectstorage.ap-seoul-1.oraclecloud.com/n/c4u04/b/bucket-20221121-1704-ADW/o

任务 7:创建对象存储身份验证令牌

要从 Oracle 云基础设施 (OCI) 对象存储加载数据,您需要一个具有适当权限的 OCI 用户才能将数据读取(或上传)到对象存储。 数据库和对象存储之间的通信依赖于本机 URI 和 OCI 用户 Auth Token。

生成Auth Token,并立即保存,因为之后就看不到了:

BlM)****dmt6

任务 8:使用数据库操作数据加载工具从对象存储加载数据

仍然以ADMIN用户进入Database Actions,单击Data Studio部分的DATA LOAD。

然后选择 Administration部分的CLOUD LOCATIONS。单击右上角Add Cloud Store Location。

  • Name:ADWCLab
  • Create Credential
  • Cloud Store:Oracle
  • Credential Name:OBJ_STORE_CRED
  • Oracle Cloud Infrastructure User Name:LL38388-USER
  • Auth Token:BlM)+0[2J;g{sAWbdmt6
  • Bucket URI: https://objectstorage.ap-seoul-1.oraclecloud.com/n/c4u04/b/bucket-20221121-1704-ADW/o

单击LOAD DATA和CLOUD STORAGE,然后下一步。将CSV文件拖拽到右边,需要改一下目标表的名字。
在这里插入图片描述
这两个表很小,很快就加载成功了。

在这里插入图片描述

任务 9:使用 PL/SQL 包 DBMS_CLOUD 从对象存储加载数据

作为向导引导的数据加载的替代方法,您可以直接使用 PL/SQL 包 DBMS_CLOUD。 这是任何负载自动化的首选。

为了获得最快的数据加载体验,Oracle 建议在将数据加载到 ADW 或 ATP 数据库之前将源文件上传到基于云的对象存储,例如 Oracle 云基础设施对象存储。

要将数据从云存储中的文件加载到 Oracle 自治数据库中,请使用 PL/SQL DBMS_CLOUD 包。 DBMS_CLOUD 包支持从以下云源加载数据文件:Oracle Cloud Infrastructure Object Storage、Oracle Cloud Infrastructure Object Storage Classic、Amazon AWS S3、Microsoft Azure Cloud Storage 和 Google Cloud Storage。

此任务显示如何使用 DBMS_CLOUD 包中的两个过程从 Oracle 云基础设施对象存储加载数据:

  • create_credential:将对象存储凭据存储在您的自治数据仓库模式中。
    您将使用此过程在 ADW 管理架构中创建对象存储凭据。
  • copy_data:将指定的源文件加载到表中。 该表必须已存在于 ADW 中
    您将使用此过程将表加载到您的管理模式,其中包含来自 Oracle 云基础设施对象存储云服务中暂存的数据文件的数据。

与数据库操作 DATA LOAD 工具为您提供在数据加载过程中自动创建目标 Oracle 自治数据库表的选项的早期任务不同,以下使用 DBMS_CLOUD 包加载的步骤要求您预先创建目标表

在 SQL Worksheet 中以 ADMIN 用户身份连接,复制并粘贴此代码片段以将所需的表创建到工作表中。 花点时间检查脚本。 在创建表之前,您将首先删除任何具有相同名称的表。 然后单击“运行脚本”按钮运行它。

DROP TABLE sales;
DROP TABLE customers;
DROP TABLE countries;
DROP TABLE supplementary_demographics;
DROP TABLE costs;
DROP TABLE times;
DROP TABLE promotions;
DROP TABLE products;
DROP TABLE channels;

CREATE TABLE sales (
    prod_id             NUMBER          NOT NULL,
    cust_id             NUMBER          NOT NULL,
    time_id             DATE            NOT NULL,
    channel_id          NUMBER(6)       NOT NULL,
    promo_id            NUMBER          NOT NULL,
    quantity_sold       NUMBER(10,2)    NOT NULL,
    amount_sold         NUMBER(10,2)    NOT NULL);
    
CREATE TABLE costs (
    prod_id     NUMBER          NOT NULL,
    time_id     DATE            NOT NULL,
    promo_id    NUMBER          NOT NULL,
    channel_id  NUMBER(6)       NOT NULL,
    unit_cost   NUMBER(10,2)    NOT NULL,
    unit_price  NUMBER(10,2)    NOT NULL);

CREATE TABLE times (
    time_id                     DATE            NOT NULL,
    day_name                    VARCHAR2(9)     NOT NULL,
    day_number_in_week          NUMBER(1)       NOT NULL,
    day_number_in_month         NUMBER(2)       NOT NULL,
    calendar_week_number        NUMBER(2)       NOT NULL,
    fiscal_week_number          NUMBER(2)       NOT NULL,
    week_ending_day             DATE            NOT NULL,
    week_ending_day_id          NUMBER          NOT NULL,
    calendar_month_number       NUMBER(2)       NOT NULL,
    fiscal_month_number         NUMBER(2)       NOT NULL,
    calendar_month_desc         VARCHAR2(8)     NOT NULL,
    calendar_month_id           NUMBER          NOT NULL,
    fiscal_month_desc           VARCHAR2(8)     NOT NULL,
    fiscal_month_id             NUMBER          NOT NULL,
    days_in_cal_month           NUMBER          NOT NULL,
    days_in_fis_month           NUMBER          NOT NULL,
    end_of_cal_month            DATE            NOT NULL,
    end_of_fis_month            DATE            NOT NULL,
    calendar_month_name         VARCHAR2(9)     NOT NULL,
    fiscal_month_name           VARCHAR2(9)     NOT NULL,
    calendar_quarter_desc       CHAR(7)         NOT NULL,
    calendar_quarter_id         NUMBER          NOT NULL,
    fiscal_quarter_desc         CHAR(7)         NOT NULL,
    fiscal_quarter_id           NUMBER          NOT NULL,
    days_in_cal_quarter         NUMBER          NOT NULL,
    days_in_fis_quarter         NUMBER          NOT NULL,
    end_of_cal_quarter          DATE            NOT NULL,
    end_of_fis_quarter          DATE            NOT NULL,
    calendar_quarter_number     NUMBER(1)       NOT NULL,
    fiscal_quarter_number       NUMBER(1)       NOT NULL,
    calendar_year               NUMBER(4)       NOT NULL,
    calendar_year_id            NUMBER          NOT NULL,
    fiscal_year                 NUMBER(4)       NOT NULL,
    fiscal_year_id              NUMBER          NOT NULL,
    days_in_cal_year            NUMBER          NOT NULL,
    days_in_fis_year            NUMBER          NOT NULL,
    end_of_cal_year             DATE            NOT NULL,
    end_of_fis_year             DATE            NOT NULL );

CREATE TABLE products (
    prod_id                     NUMBER(6)       NOT NULL,
    prod_name                   VARCHAR2(50)    NOT NULL,
    prod_desc                   VARCHAR2(4000)  NOT NULL,
    prod_subcategory            VARCHAR2(50)    NOT NULL,
    prod_subcategory_id         NUMBER          NOT NULL,
    prod_subcategory_desc       VARCHAR2(2000)  NOT NULL,
    prod_category               VARCHAR2(50)    NOT NULL,
    prod_category_id            NUMBER          NOT NULL,
    prod_category_desc          VARCHAR2(2000)  NOT NULL,
    prod_weight_class           NUMBER(3)       NOT NULL,
    prod_unit_of_measure        VARCHAR2(20)    ,
    prod_pack_size              VARCHAR2(30)    NOT NULL,
    supplier_id                 NUMBER(6)       NOT NULL,
    prod_status                 VARCHAR2(20)    NOT NULL,
    prod_list_price             NUMBER(8,2)     NOT NULL,
    prod_min_price              NUMBER(8,2)     NOT NULL,
    prod_total                  VARCHAR2(13)    NOT NULL,
    prod_total_id               NUMBER          NOT NULL,
    prod_src_id                 NUMBER          ,
    prod_eff_from               DATE            ,
    prod_eff_to                 DATE            ,
    prod_valid                  VARCHAR2(1)     );

CREATE TABLE channels (
    channel_id                  NUMBER(6)          NOT NULL,
    channel_desc                VARCHAR2(20)    NOT NULL,
    channel_class               VARCHAR2(20)    NOT NULL,
    channel_class_id            NUMBER(6)          NOT NULL,
    channel_total               VARCHAR2(13)    NOT NULL,
    channel_total_id            NUMBER(6)          NOT NULL);

CREATE TABLE promotions (
    promo_id                    NUMBER(6)       NOT NULL,
    promo_name                  VARCHAR2(30)    NOT NULL,
    promo_subcategory           VARCHAR2(30)    NOT NULL,
    promo_subcategory_id        NUMBER          NOT NULL,
    promo_category              VARCHAR2(30)    NOT NULL,
    promo_category_id           NUMBER          NOT NULL,
    promo_cost                  NUMBER(10,2)    NOT NULL,
    promo_begin_date            DATE            NOT NULL,
    promo_end_date              DATE            NOT NULL,
    promo_total                 VARCHAR2(15)    NOT NULL,
    promo_total_id              NUMBER          NOT NULL);

CREATE TABLE customers (
    cust_id                     NUMBER          NOT NULL,
    cust_first_name             VARCHAR2(20)    NOT NULL,
    cust_last_name              VARCHAR2(40)    NOT NULL,
    cust_gender                 CHAR(1)         NOT NULL,
    cust_year_of_birth          NUMBER(4)       NOT NULL,
    cust_marital_status         VARCHAR2(20)    ,
    cust_street_address         VARCHAR2(40)    NOT NULL,
    cust_postal_code            VARCHAR2(10)    NOT NULL,
    cust_city                   VARCHAR2(30)    NOT NULL,
    cust_city_id                NUMBER          NOT NULL,
    cust_state_province         VARCHAR2(40)    NOT NULL,
    cust_state_province_id      NUMBER          NOT NULL,
    country_id                  NUMBER          NOT NULL,
    cust_main_phone_number      VARCHAR2(25)    NOT NULL,
    cust_income_level           VARCHAR2(30)    ,
    cust_credit_limit           NUMBER          ,
    cust_email                  VARCHAR2(50)    ,
    cust_total                  VARCHAR2(14)    NOT NULL,
    cust_total_id               NUMBER          NOT NULL,
    cust_src_id                 NUMBER          ,
    cust_eff_from               DATE            ,
    cust_eff_to                 DATE            ,
    cust_valid                  VARCHAR2(1)     );

CREATE TABLE countries (
    country_id                  NUMBER          NOT NULL,
    country_iso_code            CHAR(2)         NOT NULL,
    country_name                VARCHAR2(40)    NOT NULL,
    country_subregion           VARCHAR2(30)    NOT NULL,
    country_subregion_id        NUMBER          NOT NULL,
    country_region              VARCHAR2(20)    NOT NULL,
    country_region_id           NUMBER          NOT NULL,
    country_total               VARCHAR2(11)    NOT NULL,
    country_total_id            NUMBER          NOT NULL,
    country_name_hist           VARCHAR2(40));


CREATE TABLE supplementary_demographics
  ( cust_id          		NUMBER NOT NULL,
    education        		VARCHAR2(21),
    occupation       		VARCHAR2(21),
    household_size   		VARCHAR2(21),
    yrs_residence    		NUMBER,
    affinity_card    		NUMBER(10),
    bulk_pack_diskettes 	NUMBER(10),
    flat_panel_monitor  	NUMBER(10),
    home_theater_package 	NUMBER(10),
    bookkeeping_application 	NUMBER(10),
    printer_supplies 		NUMBER(10),
    y_box_games 		NUMBER(10),
    os_doc_set_kanji 		NUMBER(10),
    comments         		VARCHAR2(4000));

使用以下的代码加载数据,运行前替换尖括号中的数据,即将<bucket URI>替换为https://objectstorage.ap-seoul-1.oraclecloud.com/n/c4u04/b/bucket-20221121-1704-ADW/o

/* Replace <bucket URI> below with the URL you copied from your files in OCI Object Storage at runtime.
*/
set define on
define file_uri_base = '<bucket URI>'

begin
 dbms_cloud.copy_data(
    table_name =>'CHANNELS',
    credential_name =>'OBJ_STORE_CRED',
    file_uri_list =>'&file_uri_base/chan_v3.dat',
    format => json_object('ignoremissingcolumns' value 'true', 'removequotes' value 'true')
 );

 dbms_cloud.copy_data(
    table_name =>'COUNTRIES',
    credential_name =>'OBJ_STORE_CRED',
    file_uri_list =>'&file_uri_base/coun_v3.dat',
    format => json_object('ignoremissingcolumns' value 'true', 'removequotes' value 'true')
 );

 dbms_cloud.copy_data(
    table_name =>'CUSTOMERS',
    credential_name =>'OBJ_STORE_CRED',
    file_uri_list =>'&file_uri_base/cust1v3.dat',
    format => json_object('ignoremissingcolumns' value 'true', 'removequotes' value 'true', 'dateformat' value 'YYYY-MM-DD-HH24-MI-SS')
 );

 dbms_cloud.copy_data(
    table_name =>'SUPPLEMENTARY_DEMOGRAPHICS',
    credential_name =>'OBJ_STORE_CRED',
    file_uri_list =>'&file_uri_base/dem1v3.dat',
    format => json_object('ignoremissingcolumns' value 'true', 'removequotes' value 'true')
 );

 dbms_cloud.copy_data(
    table_name =>'SALES',
    credential_name =>'OBJ_STORE_CRED',
    file_uri_list =>'&file_uri_base/dmsal_v3.dat',
    format => json_object('ignoremissingcolumns' value 'true', 'removequotes' value 'true', 'dateformat' value 'YYYY-MM-DD')
 );

 dbms_cloud.copy_data(
    table_name =>'PRODUCTS',
    credential_name =>'OBJ_STORE_CRED',
    file_uri_list =>'&file_uri_base/prod1v3.dat',
    format => json_object('delimiter' value '|', 'quote' value '^', 'ignoremissingcolumns' value 'true', 'dateformat' value 'YYYY-MM-DD-HH24-MI-SS', 'blankasnull' value 'true')
 );

 dbms_cloud.copy_data(
    table_name =>'PROMOTIONS',
    credential_name =>'OBJ_STORE_CRED',
    file_uri_list =>'&file_uri_base/prom1v3.dat',
    format => json_object('ignoremissingcolumns' value 'true', 'removequotes' value 'true', 'dateformat' value 'YYYY-MM-DD-HH24-MI-SS', 'blankasnull' value 'true')
 );

 dbms_cloud.copy_data(
    table_name =>'SALES',
    credential_name =>'OBJ_STORE_CRED',
    file_uri_list =>'&file_uri_base/sale1v3.dat',
    format => json_object('ignoremissingcolumns' value 'true', 'removequotes' value 'true', 'dateformat' value 'YYYY-MM-DD', 'blankasnull' value 'true')
 );

 dbms_cloud.copy_data(
    table_name =>'TIMES',
    credential_name =>'OBJ_STORE_CRED',
    file_uri_list =>'&file_uri_base/time_v3.dat',
    format => json_object('ignoremissingcolumns' value 'true', 'removequotes' value 'true', 'dateformat' value 'YYYY-MM-DD-HH24-MI-SS', 'blankasnull' value 'true')
 );

 dbms_cloud.copy_data(
    table_name =>'COSTS',
    credential_name =>'OBJ_STORE_CRED',
    file_uri_list =>'&file_uri_base/costs.dat',
    format => json_object('ignoremissingcolumns' value 'true', 'dateformat' value 'YYYY-MM-DD', 'blankasnull' value 'true')
 );
end;
/

您已成功加载示例表。 您现在可以运行在 Oracle 文档的关系型分析部分的大部分示例查询。 例如,要分析 2000 年某个季度特定客户 ID 的累计销售量,您可以使用“运行脚本”按钮运行以下代码片段中的查询。 阅读有关数据仓库的文档。

SELECT c.cust_id, t.calendar_quarter_desc, TO_CHAR (SUM(amount_sold),
  '9,999,999,999.99') AS Q_SALES, TO_CHAR(SUM(SUM(amount_sold))
OVER (PARTITION BY c.cust_id ORDER BY c.cust_id, t.calendar_quarter_desc
ROWS UNBOUNDED
PRECEDING), '9,999,999,999.99') AS CUM_SALES
  FROM sales s, times t, customers c
  WHERE s.time_id=t.time_id AND s.cust_id=c.cust_id AND t.calendar_year=2000
    AND c.cust_id IN (2595, 9646, 11111)
  GROUP BY c.cust_id, t.calendar_quarter_desc
  ORDER BY c.cust_id, t.calendar_quarter_desc;

任务 10:对 DBMS_CLOUD 数据加载进行故障排除

运行以下SQL,查询加载任务状态:

select * from user_load_operations;

ID TYPE   SID SERIAL# START_TIME               UPDATE_TIME              STATUS    OWNER_NAME TABLE_NAME                 PARTITION_NAME SUBPARTITION_NAME FILE_URI_LIST                                                                                      ROWS_LOADED LOGFILE_TABLE BADFILE_TABLE STATUS_TABLE TEMPEXT_TABLE             CREDENTIAL_NAME EXPIRATION_TIME          
-- ---- ----- ------- ------------------------ ------------------------ --------- ---------- -------------------------- -------------- ----------------- -------------------------------------------------------------------------------------------------- ----------- ------------- ------------- ------------ ------------------------- --------------- ------------------------ 
 3 COPY 14375   59976 2022-11-21T09:43:22.102Z 2022-11-21T09:43:23.712Z COMPLETED ADMIN      CHANNELS                                                    https://objectstorage.ap-seoul-1.oraclecloud.com/n/c4u04/b/bucket-20221121-1704-ADW/o/chan_v3.dat            5 COPY$3_LOG    COPY$3_BAD                 COPY$6IBDMKUVW7MSPMBVKV3B OBJ_STORE_CRED  2022-11-23T09:43:22.102Z 
 4 COPY 14375   59976 2022-11-21T09:43:23.724Z 2022-11-21T09:43:24.290Z COMPLETED ADMIN      COUNTRIES                                                   https://objectstorage.ap-seoul-1.oraclecloud.com/n/c4u04/b/bucket-20221121-1704-ADW/o/coun_v3.dat           23 COPY$4_LOG    COPY$4_BAD                 COPY$USI5CNJTPTWLP51X7WDN OBJ_STORE_CRED  2022-11-23T09:43:23.724Z 
 5 COPY 14375   59976 2022-11-21T09:43:24.304Z 2022-11-21T09:43:26.619Z COMPLETED ADMIN      CUSTOMERS                                                   https://objectstorage.ap-seoul-1.oraclecloud.com/n/c4u04/b/bucket-20221121-1704-ADW/o/cust1v3.dat        55500 COPY$5_LOG    COPY$5_BAD                 COPY$79JPW25ODVTG3MOI6V6B OBJ_STORE_CRED  2022-11-23T09:43:24.304Z 
 6 COPY 14375   59976 2022-11-21T09:43:26.631Z 2022-11-21T09:43:27.565Z COMPLETED ADMIN      SUPPLEMENTARY_DEMOGRAPHICS                                  https://objectstorage.ap-seoul-1.oraclecloud.com/n/c4u04/b/bucket-20221121-1704-ADW/o/dem1v3.dat          4500 COPY$6_LOG    COPY$6_BAD                 COPY$ERHLCOQXJOIS4N0QUOUQ OBJ_STORE_CRED  2022-11-23T09:43:26.631Z 
 7 COPY 14375   59976 2022-11-21T09:43:27.577Z 2022-11-21T09:43:28.162Z COMPLETED ADMIN      SALES                                                       https://objectstorage.ap-seoul-1.oraclecloud.com/n/c4u04/b/bucket-20221121-1704-ADW/o/dmsal_v3.dat        2804 COPY$7_LOG    COPY$7_BAD                 COPY$JD9SFL4W089LOU8KXAMF OBJ_STORE_CRED  2022-11-23T09:43:27.577Z 
 8 COPY 14375   59976 2022-11-21T09:43:28.174Z 2022-11-21T09:43:28.804Z COMPLETED ADMIN      PRODUCTS                                                    https://objectstorage.ap-seoul-1.oraclecloud.com/n/c4u04/b/bucket-20221121-1704-ADW/o/prod1v3.dat           72 COPY$8_LOG    COPY$8_BAD                 COPY$QNGIIT6YAJ9P8G4UDLIC OBJ_STORE_CRED  2022-11-23T09:43:28.174Z 
 9 COPY 14375   59976 2022-11-21T09:43:28.816Z 2022-11-21T09:43:29.643Z COMPLETED ADMIN      PROMOTIONS                                                  https://objectstorage.ap-seoul-1.oraclecloud.com/n/c4u04/b/bucket-20221121-1704-ADW/o/prom1v3.dat          503 COPY$9_LOG    COPY$9_BAD                 COPY$W0I7JRC2XM6LCB916GRQ OBJ_STORE_CRED  2022-11-23T09:43:28.816Z 
10 COPY 14375   59976 2022-11-21T09:43:29.654Z 2022-11-21T09:43:33.593Z COMPLETED ADMIN      SALES                                                       https://objectstorage.ap-seoul-1.oraclecloud.com/n/c4u04/b/bucket-20221121-1704-ADW/o/sale1v3.dat       916039 COPY$10_LOG   COPY$10_BAD                COPY$5DL8OEF1FRXTA5NAFTKG OBJ_STORE_CRED  2022-11-23T09:43:29.654Z 
11 COPY 14375   59976 2022-11-21T09:43:33.605Z 2022-11-21T09:43:34.487Z COMPLETED ADMIN      TIMES                                                       https://objectstorage.ap-seoul-1.oraclecloud.com/n/c4u04/b/bucket-20221121-1704-ADW/o/time_v3.dat         1826 COPY$11_LOG   COPY$11_BAD                COPY$GDJNUIRFWVLIZ3LLEY9Z OBJ_STORE_CRED  2022-11-23T09:43:33.605Z 
12 COPY 14375   59976 2022-11-21T09:43:34.500Z 2022-11-21T09:43:35.857Z COMPLETED ADMIN      COSTS                                                       https://objectstorage.ap-seoul-1.oraclecloud.com/n/c4u04/b/bucket-20221121-1704-ADW/o/costs.dat          82112 COPY$12_LOG   COPY$12_BAD                COPY$IAW8STVR4UINTBE0WCOL OBJ_STORE_CRED  2022-11-23T09:43:34.500Z 


Elapsed: 00:00:00.004
10 rows selected.

运行以下SQL,查询出错的数据加载:

select * from user_load_operations where status='FAILED';

No rows selected
0 rows selected.

要了解有关如何指定文件格式、分隔符、拒绝限制等的更多信息,请查看Autonomous Database Supplied Package Reference 和 DBMS_CLOUD Package Format Options 。

来看一下我们之前用到的格式选型:

  • ignoremissingcolumns - If there are more columns in the field_list than there are in the source files, the extra columns are stored as null.
  • removequotes - Removes any quotes that are around any field in the source file.
  • dateformat - Specifies the date format in the source file. The format option AUTO searches for the following formats
  • blankasnull - When set to true, loads fields consisting of spaces as null.
  • delimiter - Specifies the field delimiter. To use a special character as the delimiter, specify the HEX value of the ASCII code of the character. 一般是逗号。
  • quote - Specifies the quote character for the fields, the quote characters are removed during loading when specified. 一般是双引号。

学到更多

  • Loading Data from Files in the Cloud
  • Loading Data with Autonomous Database

实验 4:查询外部数据

介绍

在本实验中,您将直接在 Oracle 云基础设施 (OCI) 对象存储上查询文件,而无需将它们加载到您的数据库中。

任务 1:使用 DBMS_CLOUD 创建外部表

运行以下代码,运行前替换尖括号中的值,即将<bucket URI>替换为https://objectstorage.ap-seoul-1.oraclecloud.com/n/c4u04/b/bucket-20221121-1704-ADW/o

/* Specify the URL that you copied from your files in OCI Object Storage in the define base_URL line below*/
 
set define on
define &file_uri_base = '<bucket URI>'
 
begin
 dbms_cloud.create_external_table(
    table_name =>'CHANNELS_EXT',
    credential_name =>'OBJ_STORE_CRED',
    file_uri_list =>'&file_uri_base/chan_v3.dat',
    format => json_object('ignoremissingcolumns' value 'true', 'removequotes' value 'true'),
    column_list => 'CHANNEL_ID NUMBER,
        CHANNEL_DESC VARCHAR2(20),
        CHANNEL_CLASS VARCHAR2(20),
        CHANNEL_CLASS_ID NUMBER,
        CHANNEL_TOTAL VARCHAR2(13),
        CHANNEL_TOTAL_ID NUMBER'
 );
 
 dbms_cloud.create_external_table(
    table_name =>'COUNTRIES_EXT',
    credential_name =>'OBJ_STORE_CRED',
    file_uri_list =>'&file_uri_base/coun_v3.dat',
    format => json_object('ignoremissingcolumns' value 'true', 'removequotes' value 'true'),
    column_list => 'COUNTRY_ID NUMBER ,
        COUNTRY_ISO_CODE CHAR(2) ,
        COUNTRY_NAME VARCHAR2(40) ,
        COUNTRY_SUBREGION VARCHAR2(30) ,
        COUNTRY_SUBREGION_ID NUMBER ,
        COUNTRY_REGION VARCHAR2(20) ,
        COUNTRY_REGION_ID NUMBER ,
        COUNTRY_TOTAL VARCHAR2(11) ,
        COUNTRY_TOTAL_ID NUMBER ,
        COUNTRY_NAME_HIST VARCHAR2(40)'
 );
 
 dbms_cloud.create_external_table(
    table_name =>'CUSTOMERS_EXT',
    credential_name =>'OBJ_STORE_CRED',
    file_uri_list =>'&file_uri_base/cust1v3.dat',
    format => json_object('ignoremissingcolumns' value 'true', 'removequotes' value 'true', 'dateformat' value 'YYYY-MM-DD-HH24-MI-SS'),
    column_list => 'CUST_ID NUMBER ,
        CUST_FIRST_NAME VARCHAR2(20) ,
        CUST_LAST_NAME VARCHAR2(40) ,
        CUST_GENDER CHAR(1) ,
        CUST_YEAR_OF_BIRTH NUMBER(4,0) ,
        CUST_MARITAL_STATUS VARCHAR2(20),
        CUST_STREET_ADDRESS VARCHAR2(40) ,
        CUST_POSTAL_CODE VARCHAR2(10) ,
        CUST_CITY VARCHAR2(30) ,
        CUST_CITY_ID NUMBER ,
        CUST_STATE_PROVINCE VARCHAR2(40) ,
        CUST_STATE_PROVINCE_ID NUMBER ,
        COUNTRY_ID NUMBER ,
        CUST_MAIN_PHONE_NUMBER VARCHAR2(25) ,
        CUST_INCOME_LEVEL VARCHAR2(30),
        CUST_CREDIT_LIMIT NUMBER,
        CUST_EMAIL VARCHAR2(50),
        CUST_TOTAL VARCHAR2(14) ,
        CUST_TOTAL_ID NUMBER ,
        CUST_SRC_ID NUMBER,
        CUST_EFF_FROM DATE,
        CUST_EFF_TO DATE,
        CUST_VALID VARCHAR2(1)'
 );
 
 dbms_cloud.create_external_table(
    table_name =>'SUPPLEMENTARY_DEMOGRAPHICS_EXT',
    credential_name =>'OBJ_STORE_CRED',
    file_uri_list =>'&file_uri_base/dem1v3.dat',
    format => json_object('ignoremissingcolumns' value 'true', 'removequotes' value 'true'),
    column_list => 'CUST_ID NUMBER ,
        EDUCATION VARCHAR2(21),
        OCCUPATION VARCHAR2(21),
        HOUSEHOLD_SIZE VARCHAR2(21),
        YRS_RESIDENCE NUMBER,
        AFFINITY_CARD NUMBER(10,0),
        BULK_PACK_DISKETTES NUMBER(10,0),
        FLAT_PANEL_MONITOR NUMBER(10,0),
        HOME_THEATER_PACKAGE NUMBER(10,0),
        BOOKKEEPING_APPLICATION NUMBER(10,0),
        PRINTER_SUPPLIES NUMBER(10,0),
        Y_BOX_GAMES NUMBER(10,0),
        OS_DOC_SET_KANJI NUMBER(10,0),
        COMMENTS VARCHAR2(4000)'
 );
 
 dbms_cloud.create_external_table(
    table_name =>'PRODUCTS_EXT',
    credential_name =>'OBJ_STORE_CRED',
    file_uri_list =>'&file_uri_base/prod1v3.dat',
    format => json_object('delimiter' value '|', 'quote' value '^', 'ignoremissingcolumns' value 'true', 'dateformat' value 'YYYY-MM-DD-HH24-MI-SS', 'blankasnull' value 'true'),
    column_list => 'PROD_ID NUMBER(6,0) ,
        PROD_NAME VARCHAR2(50) ,
        PROD_DESC VARCHAR2(4000) ,
        PROD_SUBCATEGORY VARCHAR2(50) ,
        PROD_SUBCATEGORY_ID NUMBER ,
        PROD_SUBCATEGORY_DESC VARCHAR2(2000) ,
        PROD_CATEGORY VARCHAR2(50) ,
        PROD_CATEGORY_ID NUMBER ,
        PROD_CATEGORY_DESC VARCHAR2(2000) ,
        PROD_WEIGHT_CLASS NUMBER(3,0) ,
        PROD_UNIT_OF_MEASURE VARCHAR2(20),
        PROD_PACK_SIZE VARCHAR2(30) ,
        SUPPLIER_ID NUMBER(6,0) ,
        PROD_STATUS VARCHAR2(20) ,
        PROD_LIST_PRICE NUMBER(8,2) ,
        PROD_MIN_PRICE NUMBER(8,2) ,
        PROD_TOTAL VARCHAR2(13) ,
        PROD_TOTAL_ID NUMBER ,
        PROD_SRC_ID NUMBER,
        PROD_EFF_FROM DATE,
        PROD_EFF_TO DATE,
        PROD_VALID VARCHAR2(1)'
 );
 
 dbms_cloud.create_external_table(
    table_name =>'PROMOTIONS_EXT',
    credential_name =>'OBJ_STORE_CRED',
    file_uri_list =>'&file_uri_base/prom1v3.dat',
    format => json_object('ignoremissingcolumns' value 'true', 'removequotes' value 'true', 'dateformat' value 'YYYY-MM-DD-HH24-MI-SS', 'blankasnull' value 'true'),
    column_list => 'PROMO_ID NUMBER(6,0) ,
        PROMO_NAME VARCHAR2(30) ,
        PROMO_SUBCATEGORY VARCHAR2(30) ,
        PROMO_SUBCATEGORY_ID NUMBER ,
        PROMO_CATEGORY VARCHAR2(30) ,
        PROMO_CATEGORY_ID NUMBER ,
        PROMO_COST NUMBER(10,2) ,
        PROMO_BEGIN_DATE DATE ,
        PROMO_END_DATE DATE ,
        PROMO_TOTAL VARCHAR2(15) ,
        PROMO_TOTAL_ID NUMBER '
 );
 
 dbms_cloud.create_external_table(
    table_name =>'SALES_EXT',
    credential_name =>'OBJ_STORE_CRED',
    file_uri_list =>'&file_uri_base/sale1v3.dat,&file_uri_base/dmsal_v3.dat',
    format => json_object('ignoremissingcolumns' value 'true', 'removequotes' value 'true', 'dateformat' value 'YYYY-MM-DD', 'blankasnull' value 'true'),
    column_list => 'PROD_ID NUMBER ,
        CUST_ID NUMBER ,
        TIME_ID DATE ,
        CHANNEL_ID NUMBER ,
        PROMO_ID NUMBER ,
        QUANTITY_SOLD NUMBER(10,2) ,
        AMOUNT_SOLD NUMBER(10,2)'
 );
 
 dbms_cloud.create_external_table(
    table_name =>'TIMES_EXT',
    credential_name =>'OBJ_STORE_CRED',
    file_uri_list =>'&file_uri_base/time_v3.dat',
    format => json_object('ignoremissingcolumns' value 'true', 'removequotes' value 'true', 'dateformat' value 'YYYY-MM-DD-HH24-MI-SS', 'blankasnull' value 'true'),
    column_list => 'TIME_ID DATE ,
        DAY_NAME VARCHAR2(9) ,
        DAY_NUMBER_IN_WEEK NUMBER(1,0) ,
        DAY_NUMBER_IN_MONTH NUMBER(2,0) ,
        CALENDAR_WEEK_NUMBER NUMBER(2,0) ,
        FISCAL_WEEK_NUMBER NUMBER(2,0) ,
        WEEK_ENDING_DAY DATE ,
        WEEK_ENDING_DAY_ID NUMBER ,
        CALENDAR_MONTH_NUMBER NUMBER(2,0) ,
        FISCAL_MONTH_NUMBER NUMBER(2,0) ,
        CALENDAR_MONTH_DESC VARCHAR2(8) ,
        CALENDAR_MONTH_ID NUMBER ,
        FISCAL_MONTH_DESC VARCHAR2(8) ,
        FISCAL_MONTH_ID NUMBER ,
        DAYS_IN_CAL_MONTH NUMBER ,
        DAYS_IN_FIS_MONTH NUMBER ,
        END_OF_CAL_MONTH DATE ,
        END_OF_FIS_MONTH DATE ,
        CALENDAR_MONTH_NAME VARCHAR2(9) ,
        FISCAL_MONTH_NAME VARCHAR2(9) ,
        CALENDAR_QUARTER_DESC CHAR(7) ,
        CALENDAR_QUARTER_ID NUMBER ,
        FISCAL_QUARTER_DESC CHAR(7) ,
        FISCAL_QUARTER_ID NUMBER ,
        DAYS_IN_CAL_QUARTER NUMBER ,
        DAYS_IN_FIS_QUARTER NUMBER ,
        END_OF_CAL_QUARTER DATE ,
        END_OF_FIS_QUARTER DATE ,
        CALENDAR_QUARTER_NUMBER NUMBER(1,0) ,
        FISCAL_QUARTER_NUMBER NUMBER(1,0) ,
        CALENDAR_YEAR NUMBER(4,0) ,
        CALENDAR_YEAR_ID NUMBER ,
        FISCAL_YEAR NUMBER(4,0) ,
        FISCAL_YEAR_ID NUMBER ,
        DAYS_IN_CAL_YEAR NUMBER ,
        DAYS_IN_FIS_YEAR NUMBER ,
        END_OF_CAL_YEAR DATE ,
        END_OF_FIS_YEAR DATE '
 );
 
 dbms_cloud.create_external_table(
    table_name =>'COSTS_EXT',
    credential_name =>'OBJ_STORE_CRED',
    file_uri_list =>'&file_uri_base/costs.dat',
    format => json_object('ignoremissingcolumns' value 'true', 'dateformat' value 'YYYY-MM-DD', 'blankasnull' value 'true'),
    column_list => 'PROD_ID NUMBER ,
        TIME_ID DATE ,
        PROMO_ID NUMBER ,
        CHANNEL_ID NUMBER ,
        UNIT_COST NUMBER(10,2) ,
        UNIT_PRICE NUMBER(10,2) '
 );
end;
/

任务 2:查询外部数据

查询外部表,我们之上将表名加了_ext后缀:

SELECT c.cust_id, t.calendar_quarter_desc, TO_CHAR (SUM(amount_sold),
  '9,999,999,999.99') AS Q_SALES, TO_CHAR(SUM(SUM(amount_sold))
OVER (PARTITION BY c.cust_id ORDER BY c.cust_id, t.calendar_quarter_desc
ROWS UNBOUNDED
PRECEDING), '9,999,999,999.99') AS CUM_SALES
  FROM sales_ext s, times t, customers_ext c
  WHERE s.time_id=t.time_id AND s.cust_id=c.cust_id AND t.calendar_year=2000
    AND c.cust_id IN (2595, 9646, 11111)
  GROUP BY c.cust_id, t.calendar_quarter_desc
  ORDER BY c.cust_id, t.calendar_quarter_desc;

Execution time: 3.239 seconds

查询外部表会比本地表要慢些,本地表只需Execution time: 0.002 seconds。

学到更多

有关查询外部数据的更多信息,请参阅文档 Querying External Data with Autonomous Data Warehouse 。

实验 5:可视化您的数据

此实验需要安装Oracle Analytics Desktop,然后连自治数据库。略。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/24497.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ShardingSphere笔记(二):自定义分片算法 — 按月分表

ShardingSphere笔记&#xff08;二&#xff09;&#xff1a;自定义分片算法 — 按月分表 文章目录ShardingSphere笔记&#xff08;二&#xff09;&#xff1a;自定义分片算法 — 按月分表一、准备二、分表逻辑三、自定义分片算法步骤&#xff08;以按月分表为例&#xff09;1. …

【AI工程】08-MLOps工具-在Charmed Kubeflow上运行MindSpore

作者&#xff1a;王磊 更多精彩分享&#xff0c;欢迎访问和关注&#xff1a;https://www.zhihu.com/people/wldandan 在【AI工程】02-AI工程&#xff08;AI Engineering&#xff09;面面观中&#xff0c;提到Gartner把AI工程化作为未来重要战略技术趋势&#xff0c;Gartner认为…

关于webpack(v5.74.0)的模块联邦原理

在webpack中模块联邦的实现主要依赖于两个插件ContainerReferencePlugin和ContainerPlugin&#xff0c;ContainerPlugin是用来添加入口依赖并给当前依赖添加异步依赖&#xff0c;ContainerReferencePlugin用来添加解析用户的请求并分析是否是远程模块&#xff0c;然后加载远程模…

使用 JPA、Hibernate 和 Spring Data JPA 进行审计

1. 概述 在ORM的上下文中&#xff0c;数据库审计意味着跟踪和记录与持久实体相关的事件&#xff0c;或者只是实体版本控制。受 SQL 触发器的启发&#xff0c;这些事件是对实体的插入、更新和删除操作。数据库审核的好处类似于源版本控制提供的好处。 在本教程中&#xff0c;我…

Shelby American 汽车 NFT 系列来袭!

我们在 The Sandbox 上推出 Shelby NFT 作品集&#xff0c;加入我们吧&#xff01;该系列包含 Carroll Shelby 制造的一些最稀有和最抢手的汽车&#xff0c;也是现实生活中最具收藏价值的汽车。这些汽车构成了最伟大的汽车历史&#xff0c;也是传奇人物 Carroll Shelby 的伟大代…

为什么开源在线表单工具能做好数据管理?

在数字化时代&#xff0c;数据的有效应用和管理可以说是企业的无形资产&#xff0c;做好数据管理既能提升办公效率&#xff0c;又能帮助企业从规律的数字化管理中获取高效的管理策略。那么&#xff0c;什么样的开源在线表单工具可以实现这一目的&#xff1f;对于企业而言&#…

Axure药企内部管理平台+企业内部管理系统平台

这是一款根据药企的需求设计的内部管理系统&#xff0c;此系统主要是针对市场部和销售部的管理&#xff0c;此作品选择了管理员和地区经理两个角色进行了设计&#xff0c; 设计软件&#xff1a;Axure8.1&#xff08;兼容9和10&#xff09; 作品类型&#xff1a;实战原型 其主要…

抓包神器之Charles(绕过代理屏蔽)以及证书校验绕过

简介 大多数进行渗透测试的时候都可以使用burp抓包,但有的app的部分功能会使用okhttp框架,这种框架会使App不使用默认的系统代理,解决方法就是通过proxy的方式走charles,下面是具体使用方法; Charles 是常用的网络封包截取工具, 通过将自己设置成系统的网络访问代{过}{…

11.21SSM-spring 第一天学习总结

1 Spring 是什么&#xff1f; 针对Bean 生命周期进行管理的轻量级容器 IOC : 浅谈IOC--说清楚IOC是什么_ivan820819的博客-CSDN博客_ioc 软件设计六大原则 : 设计模式六大原则 六大设计原则 1.开闭原则 定义&#xff1a;一个软件实体如类、模块和函数应该对扩展开放&a…

JavaScript/uni-app对接海康ISC openapi

JavaScript/uni-app对接海康ISC openapiJavaScript实现HMAC SHA256下载安装使用crypto-js使用签名生成工具参考JavaScript实现HMAC SHA256 Run the code online with this jsfiddle. Dependent upon an open source js library calledhttp://code.google.com/p/crypto-js/.<…

如何将驱动编译为kernel 模块

前言&#xff1a; 本文章目标平台是PC Linux,不包含其他平台。 执行下面的步骤之前&#xff0c;请先编译kernel通过。 linux KO编译 将驱动程序源码集成到Linux内核中&#xff1a; 将驱动源码文件放到drivers/net/wireless并命名 自己简单创建的几个没有任何关联的源文件&…

力扣(LeetCode)30. 串联所有单词的子串(C++)

滑动窗口哈希表 哈希表 tottottot 存 wordswordswords 所有单词的出现次数。 维护滑动窗口&#xff0c;窗口长度 mwm\times wmw &#xff0c; mmm 是单词数量 www是单词长度 &#xff0c; 窗口长度对应可行解的长度。哈希表 wdwdwd 维护滑动窗口内每个单词的出现次数。 维护…

jstack问题定位分析

目录 1、jstack是什么 2、jstack的使用 1、jstack是什么 jstack是java虚拟机自带的一种堆栈跟踪工具。jstack用来打印出给定的java进程ID或者core file或者远程调试服务的java堆栈信息。 主要是用于生成java虚拟机当前时刻的线程快照&#xff0c;线程快照是当前java虚拟机…

记录运行项目的一些报错

一、git pull 报错 There is no tracking information for the current branch. Please specify whic... There is no tracking information for the current branch.Please specify which branch you want to merge with.See git-pull(1) for detailsgit pull <remote>…

身份安全的零信任方法

一、什么是零信任&#xff1f; 零信任是一组不断发展的网络安全范例术语&#xff0c;它将组织的防御措施从静态的、基于网络的边界转移到关注用户、资产和资源。这是一种安全心态&#xff0c;在明确验证之前&#xff0c;每个传入连接都被视为潜在的恶意请求。这个概念是由世界…

【特征选择】基于二元多邻域人工蜂群 (BMNABC) 特征选择问题(Matlab代码实现)

&#x1f468;‍&#x1f393;个人主页&#xff1a;研学社的博客 &#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜…

1.EdgeX实战 Ubuntu18.04搭建运行环境

文章目录前言:1、搭建Ubuntu18.04服务器平台2、安装docker和docker-compose3、运行EdgeX4、使用浏览器访问EdgeX前言: 想着把之前arduino和树莓派搭建的物联网平台迁移到EdgeX上来&#xff0c;原因有二&#xff1a; 不想去造轮子&#xff0c;自己从零开始写一个物联网的框架&…

影响 SEO 的排名优化的因素

我们在做网站SEO运营的时候&#xff0c;经常会遇到没有排名的情况。即使我们每天保持原创内容的更新和发布&#xff0c;也没有用。这时候就要马上检查网站存在哪些问题&#xff0c;及时解决&#xff0c;让我们的日常努力尽快盈利。以下因素按米贸搜排序&#xff0c;影响SEO排名…

凡亿教育嘉立创宠粉福利,9.9元秒杀PCB多层板设计实战特训班

层林浸染&#xff0c;秋意渐浓 随着双11活动的落幕 意味着工程师最忙碌的时候即将结束 然而在这多事之秋&#xff0c;还是项目高峰期 想必很多工程师都很少过好双11吧 这可不行&#xff01;&#xff01;&#xff01; 别人家有的&#xff0c;我们家的工程师都要有&#xff01;为…

pytest学习和使用10-Pytest中的测试用例如何跳过执行?

10-Pytest中的测试用例如何跳过执行&#xff1f;1 引入2 Unittest中的用例跳过3 pytest.mark.skip4 pytest.skip()5 pytest.mark.skipif()6 跳过标记7 pytest.importorskip1 引入 有时候我们需要对某些指定的用例进行跳过&#xff0c;或者用例执行中进行跳过&#xff0c;在Uni…