sqlloader学习笔记

news2025/1/23 3:17:24

  1. INFILE的用法
1)模糊导入多个数据的文件。 可以在文件名中使用通配符。 星号 * 表示复数字符,问号 (?) 表示单个字符。

INFILE 'emp*.dat'

INFILE 'm?emp.dat'

 2)如果不需要导入数据文件,控制文件中有数据,可用INFILE  * 

INFILE  *  表示控制文件导入的数据在控制文件中,begindata以后。

eg:

LOAD DATA

INFILE *

INTO TABLE DEPT

FIELDS TERMINATED BY ‘,’

(DEPTNO, DNAME, LOC)

 BEGINDATA

10,Sales,Yinginia

20,Acceounting,yirgina

3)在完整路径 中指定的文件 datafile .dat

INFILE 'c:/topdir/subdir/datafile.dat'

4)指定多个数据文件

INFILE  mydat1.dat  BADFILE  ‘mydat1.bad’  DISCARDFILE ‘mydat1.dis’

INFILE  mydat2.dat

INFILE  mydat3.dat  BADFILE  ‘mydat3.bad’  DISCARDFILE ‘mydat3.dis’

INFILE  mydat4.dat  DISCARDMAX  10 0

附加:

INFILE "e:\gnis\mi_deci.dat" --Windows

INFILE '/home/oracle/gnis/mi_deci.dat' --Unix

2、insert、append、replace、truncate

insert:在空表中插入数据,表中有数据会中止

append:在表数据后面追加数据

replace:替代表中数据,加载前会先删除原表中的数据

truncate:

2-1 columns列语句

column_name POSITION (start:end) datatype

或者

column_name datatype TERMINATED BY ‘delim’ [OPTIONALLY ENCLOSED BY ‘delim’]

column_name [POSITION({start|*[+offset]}[{:|-}end])]

 [datatype] [PIECED]

 [NULLIF condition [AND condition...]]

 [DEFAULTIF condition [AND condition...]]

 ["sql_expression"]

into table命令
INTO TABLE table_name  [{PARTITION | SUBPARTITION} (partition_name)]  {INSERT | REPLACE | TRUNCATE | APPEND}  [SORTED [INDEXES] (index_list)] [SINGLEROW]  [{INSERT | REPLACE | TRUNCATE | APPEND}]  [OPTIONS (FILE=database_filename)]  [REENABLE [DISABLED_CONSTRAINTS][EXCEPTIONS exception_table_name]]  [WHEN field_conditions]  [{OID(fieldname)|SID(fieldname)}]  [FIELDS [delimiter_description]]  [TRAILING [NULLCOLS]  [SKIP skip_count]  (field_list)

3.加载多个表,字段用逗号分隔开

LOAD DATA
INFILE ‘animal_feeding.csv’ 
APPEND 
INTO TABLE animal_feeding 
(
animal_id INTEGER EXTERNAL TERMINATED BY ‘,’, 
feeding_date DATE “dd-mon-yyyy” TERMINATED BY ‘,’, 
pounds_eaten DECIMAL EXTERNAL TERMINATED BY ‘,’ 
) 
INTO TABLE animal_feeding_note 
( 
animal_id INTEGER EXTERNAL TERMINATED BY ‘,’, 
feeding_date DATE “dd-mon-yyyy” TERMINATED BY ‘,’, 
pounds_eaten FILLER DECIMAL EXTERNAL TERMINATED BY‘,’, 使用了FILLER关键字指定SQLLoader不加载此字段。
note CHAR TERMINATED BY ‘,’ 
OPTIONALLY ENCLOSED BY ‘“‘      界定符为双引号,也就是“a”=> a;
)

3-1提供了多个数据文件,要导入同一张表

LOAD DATA
INFILE ldr_case8_1.dat
INFILE ldr_case8_2.dat
INFILE ldr_case8_3.dat
TRUNCATE INTO TABLE MANAGER
FIELDS TERMINATED BY ","
(MGRNO,MNAME,JOB)

3-2同一个数据文件,要导入不同表

待导入的数据文件如下:

BON SMITH CLEAK 3904

BON ALLEN SALER,M 2891

MGR 10 SMITH SALES MANAGER

MGR 11 ALLEN.W TECH MANAGER

TMP SMITH 7369 CLERK 800 20

TMP ALLEN 7499 SALESMAN 1600 30

需求是将以 MGR 开头的记录导入 MANAGER 表,以 BON 开头的记录导入 BONUS表,其他记录存入废弃文件中

创建控制文件如下:

LOAD DATA
INFILE ldr_case9.dat
DISCARDFILE ldr_case9.dsc
TRUNCATE
 INTO TABLE BONUS
 WHEN TAB= 'BON'
 (TAB FILLER POSITION(1:3),
 ENAME POSITION(5:9) ,
 JOB POSITION(*+1:18),
 SAL POSITION(*+1)
 )

 INTO TABLE MANAGER
 WHEN TAB = 'MGR'
 (TAB FILLER POSITION(1:3),
 MGRNO POSITION(4:5) ,
 MNAME POSITION(7:13),
 JOB POSITION(*+1))

附加:

DATE的其他格式

4、描述定宽列POSITION (start:end)     记录的第一个字符总是位置1  

(

animal_id POSITION (1:3) INTEGER EXTERNAL,

feeding_date POSITION (4:14) DATE “dd-mon-yyyy”,

pounds_eaten POSITION (15:19) ZONED (5,2),

note POSITION (20:99) CHAR

)

5、sqlloader文本的基本数据类型

CHAR               标识字符数据。 不要将其与数据库中使用的CHAR数据类型混淆。 两者之间不存在任何关系。 如果要将数据加载到任何类型的文本字段中,如VARCHAR2CHARCLOB,请使用SQL*Loader CHAR数据类型。 

DATE [“format”]       标识日期。 即使它是可选的,也要指定一种格式。 这样,如果数据库中的默认日期格式与您期望的不同,就可以避免出现问题。 

INTEGER EXTERNAL    标识以字符形式存储的整数值。 例如,字符串“123”是一个合法的INTEGER EXTERNAL值。 

DECIMAL EXTERNAL   标识以字符形式存储的数字值,该值可能包含小数点。 字符串" - 123.45 "DECIMAL EXTERNAL值的一个很好的例子。 ZONED(精度,比例

6NULLIF

如果您希望将空白字段视为null,则可以使用NULLIF子句来判断SQL*Loader来做这个。 NULLIF子句出现在数据类型之后,并接受下面的形式:  

NULLIF field_name=BLANKS

要定义animal_id,以便将空白值存储为null,可以使用这个定义:  

animal_id POSITION (1:3) INTEGER EXTERNAL NULLIF animal_id=BLANKS,

7trailing nullcols   如要导入源文件此列内容为空,在导入到数据库表中,此列内容就是null

...

INTO TABLE animal_feeding
TRAILING NULLCOLS
(
  animal_id INTEGER EXTERNAL TERMINATED BY ‘,’,
  feeding_date DATE “dd-mon-yyyy” TERMINATED BY ‘,’,
  pounds_eaten DECIMAL EXTERNAL TERMINATED BY ‘,’,
  note CHAR TERMINATED BY ‘,’
  OPTIONALLY ENCLOSED BY ‘”’
)

8、数据类型

1.字符类型数据
CHAR[ (length)] [delimiter]
length
缺省为 1.

2.日期类型数据
DATE [ ( length)]['date_format' [delimiter]
使用to_date函数来限制。

3.字符格式中的十进制
DECIMAL EXTERNAL [(length)] [delimiter]
用于常规格式的十进制数(不是二进制=> 一个位等于一个bit)。

4.压缩十进制格式数据
DECIMAL digtial [,divcision]

5.双精度符点二进制
DOUBLE

6.普通符点二进制
FLOAT

7.字符格式符点数
FLOAT EXTERNAL [ (length) ] [delimiter]

8.双字节字符串数据
GRAPHIC [ (legth)]

9.双字节字符串数据
GRAPHIC EXTERNAL[ (legth)]

10.常规全字二进制整数
INTEGER

11.字符格式整数
INTEGER EXTERNAL

12.常规全字二进制数据
SMALLINT

13.可变长度字符串
VARCHAR

14.可变双字节字符串数据
VARGRAPHIC

15.RAW

16.VARRAWC

9、错误数据

INFILE ‘animal_feeding.csv’

BADFILE ‘animal_feeding_bad.bad’

10、CONCATENATE n   n行数据合并看成一行数据

LOAD DATA

INFILE ‘animal_feeding_concat.csv’

BADFILE ‘animal_feeding_concat’

APPEND

CONCATENATE 2

.. .

11、continueif 的数据行合并常用语句

通过在指定的位置指定一个或多个字符,允许组合物理记录到逻辑记录。

continueif next (1:2) = '--'

a1,b1,c1,
--a2,b2,c2,
a3,b3,c3,
--a4,b4,c4,
a5,b5,c5,

===》

a1,b1,c1, a2,b2,c2,

a3,b3,c3,a4,b4,c4,
a5,b5,c5,

continueif next preserve (1:2) = '--'

a1,b1,c1,
--a2,b2,c2,
a3,b3,c3,
--a4,b4,c4,
a5,b5,c5,

===》

a1,b1,c1, --a2,b2,c2,

a3,b3,c3,--a4,b4,c4,
a5,b5,c5,

continueif this preserve (1:2) = '--'

a1,b1,c1,
--a2,b2,c2,
a3,b3,c3,
--a4,b4,c4,
a5,b5,c5,

===》

a1,b1,c1,

--a2,b2,c2,a3,b3,c3,

--a4,b4,c4,a5,b5,c5,

continueif last  (= '-')

a1,b1,c1,-
a2,b2,c2,
a3,b3,c3,-
a4,b4,c4,
a5,b5,c5,

===》

a1,b1,c1, -a2,b2,c2,

a3,b3,c3,-a4,b4,c4,

a5,b5,c5,

12、sqlldr的命令语句

sqlldr [param=value[, param=value...]]

在系统提示符下启动 SQL*加载程序并运行示例。

例如,要运行案例 1,请输入以下命令:

sqlldr USERID=scott CONTROL=ulcase1.ctl LOG=ulcase1.log

CONTROL 将参数和参数替换为相应的控件和 LOG 日志文件名,然后按 Enter 键。 当系统提示输入密码时, tiger 键入并按 Enter 键。

==〉> sqlldr CONTROL=ulcase1.ctl LOG=ulcase1.log

Username: scott

Password: password

userid    传入您的用户名、密码和Net8服务名称。 使用的语法与任何其他命令行实用程序相同,看起来像这样:userid=username[/password][@service] 

control    传入控制文件名。 下面是一个例子:: control=[path]filename[.ext] 控制文件的默认扩展名是.ctl 

log       传入日志文件名。 例如: log=[path]filename[.ext] 日志文件的默认扩展名为。log 如果不提供文件名,日志文件将被命名为与控制文件匹配 

bad      传入错误的文件名。 例如: bad=[path]filename[.ext]坏文件的默认扩展名是。bad 如果您没有提供文件名,那么坏文件将被命名为与控制文件匹配。 使用此参数将覆盖可能在控制文件中指定的任何文件名。 

Data     传入数据文件名。 例如: data=[path]filename[.ext]数据文件的默认扩展名是。dat 在命令行上指定数据文件名将覆盖控制文件中指定的名称。 如果没有在任何地方指定数据文件名,则默认使用与控制文件相同的名称,但扩展名为.dat 

discard     传入丢弃的文件名。 例如: discard=[path]filename[.ext] 用于丢弃文件的默认扩展名是。dis 如果不提供文件名,则丢弃文件将被命名为与控制文件匹配。 使用此参数将覆盖控制文件中可能指定的任何丢弃文件名。 

discardmax   可选地对允许丢弃的记录数量进行限制。 语法是这样的:discardmax=number_of_records如果丢弃的记录数量超过这个限制,加载将被中止。 

Skip    允许您跳过指定数量的逻辑记录。 语法如下:skip=number_of_records当您想要继续加载已经中止的文件,并且知道在重新启动之前要进入文件的多少位置时,可以使用skip参数。 

load    可选地限制要加载到数据库中的逻辑记录的数量。 语法是这样的:load=number_of_records一旦达到指定的限制,SQL*Loader将停止。 

Errors  指定SQL*Loader终止加载之前允许的错误数量。 语法看起来是这样的:errors=number_of_records SQL*Loader将在收到超过指定数量的错误时停止加载。 默认限制为50 没有办法允许无限数量。 最好是指定一个非常高的值,比如999999999 

Rows   间接控制加载过程中提交的频率。rows参数以行为单位指定用于常规路径加载的绑定数组的大小。SQL*Loader会将该值舍入为I/O块大小的若干倍。rows参数的语法如下所示:rows=number_of_rows对于常规路径加载,默认值是64。默认情况下,只有在完成整个负载时才保存直接路径负载。但是,当完成直接路径负载时,可以使用此参数直接控制提交频率

………

USERID={username[/password][@net_service_name]|/}

CONTROL=control_file_name

LOG=path_file_name

BAD=path_file_name

DATA=path_file_name

DISCARD=path_file_name

DISCARDMAX=logical_record_count

SKIP=logical_record_count

SKIP_INDEX_MAINTENANCE={TRUE | FALSE}

SKIP_UNUSABLE_INDEXES={TRUE | FALSE}

LOAD=logical_record_count

ERRORS=insert_error_count

ROWS=rows_in_bind_array

BINDSIZE=bytes_in_bind_array

SILENT=[(]keyword[,keyword...][)]

DIRECT={TRUE | FALSE}

PARFILE=path_file_name

PARALLEL={TRUE | FALSE}

READSIZE=bytes_in_read_buffer

FILE=database_datafile_name

13编写表达式来修改加载的数据

LOAD DATA

INFILE ‘animal_feeding_expr.csv’

BADFILE ‘animal_feeding_expr’

APPEND

INTO TABLE animal_feeding

TRAILING NULLCOLS

(

animal_id INTEGER EXTERNAL TERMINATED BY “,”,

feeding_date DATE “dd-mon-yyyy” TERMINATED BY “,”,

pounds_eaten DECIMAL EXTERNAL TERMINATED BY “,”

    “:pounds_eaten * 2.2”,    取到的值*2.2

note CHAR TERMINATED BY “,”

     OPTIONALLY ENCLOSED BY ‘“‘

    “UPPER(:note)”   字符转成大写

)

截取

SAL position(17:20),

COMM "substr(:SAL,1,1)"

替换

REMARK "replace(:remark, '\\n',chr(10))"

空白看成NULL

animal_id POSITION (1:3) INTEGER EXTERNAL

          NULLIF animal_id=BLANKS,

自动生成字段值

column_name {

RECNUM    递增数值从1开始

 |SYSDATE   系统时间

 |CONSTANT {string | "string"}   常量值

 |SEQUENCE [({COUNT | MAX|integer}[,increment])]  效果与RECNUM差不多,可以设置开始值

 }

eg:

REMARK    CONSTANT "United States Geological Survey",

TIMES     SYSDATE

去掉空格

county POSITION(64) CHAR(5) "RTRIM(:county)"

NVL

elevation POSITION(49) INTEGER EXTERNAL(4)

"NVL(:elevation,0)",

转数字计算

price POSITION(37:40) "TO_NUMBER(:bookPrice)/100"  -- TO_NUMBER(NVL(:price,0))/100

取最大值

price POSITION(37) "GREATEST(TO_NUMBER(:price)/100, TO_NUMBER(:pages*0.10))",

14、反斜杠转义字符

SQL*加载程序和外部表使用各种约定将单引号标识为封闭字符。

SQL*Loader 允许使用反斜杠  \  转义字符,以确保将单引号标识为括起来的字符。

例如

FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '\''

<==>

FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY "'"

DDL 语法中,反斜杠转义字符 \)。

"so'\"far"     or  'so\'"far'     ==  so'"far

"'so\\far'"    or  '\'so\\far\'' ==  'so\far'

"so\\\\far"    or  'so\\\\far'    ==   so\\far

15 控制文件内容

1    -- This is an example control file

2    LOAD DATA

3    INFILE 'sample.dat'

4    BADFILE 'sample.bad'

5    DISCARDFILE 'sample.dsc'

6    APPEND

7    INTO TABLE emp

8    WHEN (57) = '.'

9    TRAILING NULLCOLS

10  (hiredate SYSDATE,

      deptno POSITION(1:2)  INTEGER EXTERNAL(2)

              NULLIF deptno=BLANKS,

       job    POSITION(7:14)  CHAR  TERMINATED BY WHITESPACE

              NULLIF job=BLANKS  "UPPER(:job)",

       mgr    POSITION(28:31) INTEGER EXTERNAL

              TERMINATED BY WHITESPACE, NULLIF mgr=BLANKS,

       ename  POSITION(34:41) CHAR

              TERMINATED BY WHITESPACE  "UPPER(:ename)",

       empno  POSITION(45) INTEGER EXTERNAL

              TERMINATED BY WHITESPACE,

       sal    POSITION(51) CHAR  TERMINATED BY WHITESPACE

              "TO_NUMBER(:sal,'$99,999.99')",

       comm   INTEGER EXTERNAL  ENCLOSED BY '(' AND '%'

              ":comm * 100"

    )

此示例控制文件中左侧的数字未出现在实际控制文件中。 这些数字对应于以下说明中的数字:

  1. 控制文件中条目之前的此注释是如何在控制文件中输入注释的示例。 “--”表注释
  2. LOAD DATA 该语句在 SQL*Loader 中启动新的数据加载。 有关语法详细信息,请参阅 SQL*加载程序语法图。
  3. INFILE 该子句指定包含要加载的数据的数据文件的名称。 有关更多信息,请参阅指定数据文件。
  4. BADFILE 该子句指定拒绝记录写入的文件的名称。 有关详细信息,请参阅指定错误文件。
  5. DISCARDFILE 该子句指定逻辑删除记录写入的文件的名称。 有关详细信息,请参阅指定放弃文件。
  6. APPEND 子句是可用于将数据加载到非空表中的选项之一。 有关更多信息,请参见将数据加载到非空表中。

若要将数据加载到空表中,请使用 INSERT 子句。 有关更多信息,请参见将数据加载到空表中。

  1. INTO TABLE 可以使用子句来标识表、字段和数据类型。 此子句定义数据文件中的记录与数据库中的表之间的关系。 有关更多信息,请参见指定表名。
  2. WHEN 子句指定一个或多个字段条件。 SQL*加载器根据此条件确定是否加载数据。 有关详细信息,请参阅有条件加载记录。
  3. TRAILING NULLCOLS 使用子句时,如果记录中不存在由相对位置指定的列,则该列的值将被视为 NULL。 有关详细信息,请参阅处理缺少数据的短记录。
  4. 控制文件的其余部分包含一个字段列表,您可以在其中查看正在加载的表的列格式详细信息。 有关控制文件节的详细信息,请参阅 SQL*加载程序字段列表参考。

16在控制文件中指定命令行参数

SQL*Loader 控制文件中,可以使用子句指定 OPTIONS 命令行参数。

OPTIONS (parameter=value[,parameter=value...])

OPTIONS 从句放在LOAD DATA句子之前。 

eg

OPTIONS (SILENT=ALL, ERRORS=999999)
LOAD DATA
INFILE 'mi_deci.dat'
TRUNCATE
INTO TABLE GNIS(…)
有关OPTIONS 这些参数的说明,请参阅 SQL*加载程序命令行参考。

BINDSIZE = n
COLUMNARRAYROWS = n
DATE_CACHE = n
DEGREE_OF_PARALLELISM= {degree-num|DEFAULT|AUTO|NONE}
DIRECT = {TRUE | FALSE} 
EMPTY_LOBS_ARE_NULL = {TRUE | FALSE}
ERRORS = n
EXTERNAL_TABLE = {NOT_USED | GENERATE_ONLY | EXECUTE}
FILE = tablespace file 
LOAD = n 
MULTITHREADING = {TRUE | FALSE}
PARALLEL = {TRUE | FALSE}
READSIZE = n
RESUMABLE = {TRUE | FALSE}
RESUMABLE_NAME = 'text string'
RESUMABLE_TIMEOUT = n
ROWS = n 
SDF_PREFIX = string
SILENT = {HEADER | FEEDBACK | ERRORS | DISCARDS | PARTITIONS | ALL} 
SKIP = n   
SKIP_INDEX_MAINTENANCE = {TRUE | FALSE}
SKIP_UNUSABLE_INDEXES = {TRUE | FALSE}
STREAMSIZE = n
TRIM= {LRTRIM|NOTRIM|LTRIM|RTRIM|LDRTRIM}

17WHEN条件

LOAD DATA
 INFILE 'michigan_feature_names.dat'
 BADFILE 'michigan.bad'
 APPEND INTO TABLE features
 WHEN (feature_type='falls') AND (county='Alger')
 (
 state          CHAR TERMINATED BY ',' ENCLOSED BY '"',
 feature_name CHAR TERMINATED BY ',' ENCLOSED BY '"',
 feature_type CHAR TERMINATED BY ',' ENCLOSED BY '"',
 county        CHAR TERMINATED BY ',' ENCLOSED BY '"'
 )

18自定义方法调用

CREATE OR REPLACE FUNCTION price_check(price_in NUMBER, pages_in NUMBER)
RETURN NUMBER IS
 min_price NUMBER;
BEGIN

 SELECT ppt_min_price INTO min_price
 FROM price_page_threshold
 WHERE pages_in >= ppt_pages
 AND ppt_pages = (
 SELECT MAX(ppt_pages)
 FROM price_page_threshold
 WHERE pages_in >= ppt_pages);

 RETURN GREATEST(min_price,price_in);
END;



LOAD DATA
 INFILE 'book_prices.dat'
 REPLACE INTO TABLE book

 (
 book_title POSITION(1) CHAR(35),
 book_price POSITION(37)
 "price_check(:book_price,:book_pages)",
 book_pages POSITION(42) INTEGER EXTERNAL(3),
 book_id "book_seq.nextval"
 )

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

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

相关文章

麒麟arm架构 编译安装qt5.14.2

1、先在官网下载qt源码&#xff1a; https://download.qt.io/archive/qt/5.14/5.14.2/single/[qt源码下载地址] 2、解压编译 使用tar -xvf qt-everywhere-src-5.14.2.tar.xz 解压压缩包 cd qt-everywhere-src-5.14.2 执行 ./configure --prefix/usr/local/qt.5.14.2 make -…

【Nginx17】Nginx学习:目录索引、字符集与浏览器判断模块

Nginx学习&#xff1a;目录索引、字符集与浏览器判断模块 今天要学习的内容有几个还是大家比较常见的&#xff0c;所以学习起来也不会特别费劲。对于目录的默认页设置大家都不会陌生&#xff0c;字符集的设置也比较常见&#xff0c;而浏览器的判断这一块&#xff0c;可能有同学…

大模型基础:GPT家族与提示学习

大模型基础:GPT 家族与提示学习 从 GPT-1 到 GPT-3.5 GPT(Generative Pre-trained Transformer)是 Google 于2018年提出的一种基于 Transformer 的预训练语言模型。它标志着自然语言处理领域从 RNN 时代进入 Transformer 时代。GPT 的发展历史和技术特点如下: GPT-12018年6月…

OpenSSH 远程升级到 9.4p1

OpenSSH 远程升级到 9.4p1 文章目录 OpenSSH 远程升级到 9.4p1背景升级前提1. 升级 OpenSSL2. 安装并启用Telnet 升级OpenSSH 背景 最近的护网行动&#xff0c;被查出来了好几个关于OpenSSH 的漏洞。这是因为服务器系统安装后&#xff0c;直接使用了系统自带版本的OpenSSH &am…

lib调试报LNK2038 检测到“_ITERATOR_DEBUG_LEVEL”的不匹配项: 值“0”不匹配值“2”

最近用cef&#xff0c;要debug调试&#xff0c;引用库时&#xff0c;提示&#xff1a; LNK2038 检测到“_ITERATOR_DEBUG_LEVEL”的不匹配项: 值“0”不匹配值“2” 研究后的结论&#xff1a;这是因为&#xff0c;这个库的实现方式太老&#xff1a; #if _HAS_ITERATOR_DEBUG…

【C++笔记】C++之类与对象(上)

【C笔记】C之类与对象&#xff08;上&#xff09; 1、类是结构体的升级2、类中可以定义的东西3、类访问限定符4、类的声明5、类的实例化(定义)6、类的大小的计算7、this指针 1、类是结构体的升级 C的一个显著特征就是兼容C语言&#xff0c;所以C把结构体“升级”成了“类”&am…

高等数学 | 微分方程解决单中值问题、高阶导数的莱布尼兹公式

单中值问题都可以用通过求解微分方程的特解构造辅助函数&#xff0c;再用罗尔定理即可。 高阶导数的莱布尼兹公式推导以及应用&#xff0c;先求导至能够发现某次求导开始为0的时候&#xff0c;对其使用莱布尼兹公式。

Photoshop制作漂亮光泽感3D按钮

原文链接(https://img-blog.csdnimg.cn/45472c07f29944458570b59fe1f9a0e0.png)

简单记录牛客top101算法题(初级题C语言实现)BM24 二叉树的中序遍历 BM28 二叉树的最大深度 BM29 二叉树中和为某一值的路径

1. BM24 二叉树的中序/后续遍历 要求&#xff1a;给定一个二叉树的根节点root&#xff0c;返回它的中序遍历结果。                          输入&#xff1a;{1,2,#,#,3} 返回值&#xff1a;[2,3,1]1.1 自己的整体思路&#xff08;与二叉树的前序遍…

HCIP——BGP协议

目录 一.什么是BGP&#xff1f; 二.IGP和EGP 三.BGP的特点 四.BGP的数据包 五.BGP的工作过程 BGP的六种状态机 六.BGP的路由黑洞问题 七.BGP的防环机制——水平分割 八.BGP的宣告问题 九.BGP的自动汇总 十.BGP的安全特性 十一.BGP的选路规则 一.什么是BGP&#xff1f; 1.…

ATF(TF-A)安全通告 TFV-8 (CVE-2018-19440)

安全之安全(security)博客目录导读 ATF(TF-A)安全通告汇总 目录 一、ATF(TF-A)安全通告 TFV-8 (CVE-2018-19440) 二、CVE-2018-19440 一、ATF(TF-A)安全通告 TFV-8 (CVE-2018-19440) Title 不保存x0~x3寄存器可能会将信息从一个非安全世界的SMC client泄漏到另一个 CVE ID …

学习ts(二)数据类型(接口和对象类型、数组类型)

interface 重名会重合到一起 如果两个interface名称相同&#xff0c;会把两个合到一起 重复定义同一个需要类型相同 不能多或者减少属性 设置任意key 当定义接口返回数据时&#xff0c;我们不确定接口会返回多少&#xff0c;知道所需要的固定属性&#xff0c;其余属性可以…

第九章 动态规划part08(代码随想录)

139.单词拆分 1. 确定dp[i][j] dp数组以及下标的含义一维dp数组的递推公式 dp[i] : 字符串长度为i的话&#xff0c;dp[i]为true&#xff0c;表示可以单词能被在字典中出现的单词组成。 dp[s.size()] true; 说明可以利用字典中出现的单词拼接出 s 。 2. 一维dp数组的递推公式…

【STM32 学习】电源解析(VCC、VDD、VREF+、VBAT)

VCC电源电压GND电源供电负电压&#xff08;通常接地&#xff09;VDD模块工作正电压VSS模块工作负电压VREFADC参考正电压VREF-ADC参考负电压VBAT电池或其他电源供电VDDA模拟供电正电压VSSA模拟供电负电压 一、VCC&#xff08;供电电压&#xff09; VCC是指芯片的电源电压&#…

linux安装mysql-8.0.33正确方式及常见问题

目录 获取mysql下载地址链接 解压安装包 复制文件到安装目录 添加用户和用户属组修改权限 创建存储数据的文件夹/usr/local/mysql 初始化安装 修改配置文件 创建日志文件并赋予对应权限 启动成功​编辑 创建软链接 之前安装过mysql&#xff0c;时间比较长忘记安装步骤了今天…

【C语言】memset()函数

一.memset()函数简介 我们先来看一下cplusplus.com - The C Resources Network网站上memset()函数的基本信息&#xff1a; 1.函数功能 memset()函数的功能是:将一块内存空间的每个字节都设置为指定的值。 这个函数通常用于初始化一个内存空间&#xff0c;或者清空一个内存空间…

HCIP第五节------------------------------------------ospf

一、OSPF基础 1、动态路由分类 2、距离矢量协议 运行距离矢量路由协议的路由器周期性地泛洪自己的路由表。通过路由的交互&#xff0c;每台路由器都从相邻的路由器学习到路由&#xff0c;并且加载进自己的路由表中&#xff0c;然后再通告给其他相邻路由器。 对于网络中的所有…

服务器数据恢复-EqualLogic存储RAID5数据恢复案例

服务器数据恢复环境&#xff1a; 一台DELL EqualLogic存储中有一组由16块SAS硬盘组建的RAID5阵列。存储存放虚拟机文件&#xff0c;采用VMFS文件系统&#xff0c;划分了4个lun。 服务器故障&检测&分析&#xff1a; 存储设备上有两个硬盘指示灯显示黄色&#xff0c;存储…

使用python读Excel文件并写入另一个xls模版

效果如下&#xff1a; 原文件内容 转化后的内容 大致代码如下&#xff1a; 1. load_it.py #!/usr/bin/env python import re from datetime import datetime from io import BytesIO from pathlib import Path from typing import List, Unionfrom fastapi import HTTPExcep…

炬芯科技发布全新第二代智能手表芯片,引领腕上新趋势!

2023年7月&#xff0c;炬芯科技宣布全新第二代智能手表芯片正式发布。自2021年底炬芯科技推出第一代的智能手表芯片开始便快速获得了市场广泛认可和品牌客户的普遍好评。随着技术的不断创新和突破&#xff0c;为了更加精准地满足市场多元化的变幻和用户日益增长的体验需求&…