Shell+sqlldr载数卸数

四、数据仓库--ORACLE数据库卸数实现 自从开始接触数据仓库的卸数以来,从KETTLE工具开始学习,从ktr最简单的工具卸数到JAVA代码卸数,再到研究ktr文件的结构,用JAVA代码批量生成,因为到数据表有五百张的时候,手工制作ktr文件是很花时间的。     一、KETTLE工具画ktr文件     1、下载kettle工具,我的是kettle4.2,绿色版,免安装 阅读详情

目录

1、先下载外围系统dat文件到本地服务器

2、将外围系统dat文件放进数据库

3、本地表信息导出dat文件

4、本地表信息文件传到其他服务器


1、先下载外围系统dat文件到本地服务器

#!/bin/bash
sftp_Host="10.4.1.2"
sftp_userName="gqgl"
sftp_passWord="gqgl"
sftp_port=22
#远端机器文件路径
sftpRemotePath="/myhome"
#下载到本地文件路径
sftpLocalPath="/batchfile"
sftpLoadPath=$sftpRemotePath
fileFilter=$1
cd $sftpLocalPath
# SFTP非交互式操作
sftp_download()
{
echo "下载文件"
    expect <<- EOF
    set timeout 5
    spawn sftp  -P $sftp_port $sftp_userName@$sftp_Host

    expect { 
        "(yes/no)?" {send "yes\r"; expect_continue }
        "*assword:" {send "$sftp_passWord\r"}
    }
    expect "sftp>"
    send "cd $sftpLoadPath \r"
    expect "sftp>"
    set timeout -1
   
    send "get C_CBS_BIFM06_$fileFilter_ADD.dat \r"
    expect "sftp>"
#有多少文件就下载多少个    
    send "get C_CBS_DPFM02_$fileFilter_ADD.ctl \r"
    expect "sftp>"
    send "bye\r"
EOF
}
sftp_download
if [ 1$? -ne 10 ]; then    #返回值不是0,存储过程运行失败  
   echo 1
  exit 1                                                      
fi                                                                                                                    
echo 0                                             
exit 0

2、将外围系统dat文件放进数据库

#!/bin/bash
echo 'start imp table'
id=$1
datenow=$2
tablename=$3
#往后加一天
newdate=$(date -d "$2 1 days" "+%Y%m%d")
echo ${newdate}
#
#ctl文件路径
ctl_path=/dbhome/oracle/etl/
#数据库服务器
db=10.2.4.77
#服务名
servername=gqxt
#端口号
port=1521
#数据库用户名
orauser=equity
#数据库用户名
orapasswd=equity
#昨天
#datenow=$(date -d "1 days ago" +%Y%m%d)

while true
do
uppname=$(echo $tablename | tr 'a-z' 'A-Z')
cd $ctl_path
if [ -d "/${datenow}/" ];then
echo "文件夹已存在"
else 
mkdir ${datenow}
fi
cd $ctl_path/$datenow
if [ -d "/ctl" ];then
echo "文件夹已存在"
else 
mkdir ctl
fi
if [ -d "/logs" ];then
echo "文件夹已存在"
else 
mkdir logs
fi
cd $ctl_path
cp $tablename.ctl $ctl_path/$datenow/ctl

sqlplus -s ${orauser}/${orapasswd}@${db}:${port}/${servername} <<!
update EQUITY_ETL_TAB_LOGS set status='1',begtime=to_char(sysdate,'yyyymmdd hh24:mi:ss'),endtime=null where logid=${id};

exit;
!

sqlldr userid=equity/equity@10.2.4.77:1522/nmoadb control=$ctl_path/ctl/${tablename}.ctl log=$ctl_path/logs/$datenow/${tablename}.log

err_num=$(cat $ctl_path/logs/$datenow/${tablename}.log | grep -A4 ${uppname}:| sed -n '3p' | awk '{print $1}') 
suc_num=$(cat $ctl_path/logs/$datenow/${tablename}.log | grep -A4 ${uppname}:| sed -n '2p' | awk '{print $1}')

echo $err_num
echo $suc_num

if  [ $err_num -eq 0 ];then 
sqlplus -s ${orauser}/${orapasswd}@${db}:${port}/${servername} <<!
update EQUITY_ETL_TAB_LOGS set error_log='$ctl_path/logs/$datenow/${tablename}.log',suc_num='${suc_num}',err_num='${err_num}',status='0',endtime=to_char(sysdate,'yyyymmdd hh24:mi:ss') where logid=${id};
exit;
!
  break;
  else
sqlplus -s ${orauser}/${orapasswd}@${db}:${port}/${servername} <<!
update EQUITY_ETL_TAB_LOGS set error_log='$ctl_path/logs/$datenow/${tablename}.log',suc_num='${suc_num}',err_num='${err_num}',status='2',endtime=to_char(sysdate,'yyyymmdd hh24:mi:ss') where logid=${id};
exit;
!
 sleep 600
fi
done


3、本地表信息导出dat文件

echo "table name is ------$1"
export FILE_PATH='/hqtTest/'
export FILE_DATE=$(date +%Y%m%d)
export FILE_TIME=$(date +%H%M%S)
pwd
if [ -d "${FILE_PATH}${FILE_DATE}" ];then
echo ${FILE_PATH}${FILE_DATE}"  is created"
else 
mkdir ${FILE_PATH}${FILE_DATE}
echo $FILE_PATH$FILE_DATE
fi
export S=C_GQGL_
export LOGO=_
export ALL=_ALL
export DATA_FILE=$FILE_PATH$FILE_DATE/$S$1$LOGO${FILE_DATE}$ALL.dat
export CTL_FILE=$FILE_PATH$FILE_DATE/$S$1$LOGO${FILE_DATE}$ALL.ctl
export ORACLE_BASE=/oracle
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/dbhome_1
export ORACLE_GW=$ORACLE_BASE/product/gw11.2.0/dbhome_1
export ORACLE_SID=gqxt
export ORACLE_TERM=xterm
export ORA_NLS33=$ORACLE_HOME/nls/data
export TNS_ADMIN=$ORACLE_HOME/network/admin
export ORACLE_OWNER=oracle
export NLS_DATE_FORMAT="YYYY-MM-DD HH24:MI:SS"
export PATH=/usr/sbin:$PATH
export PATH=$ORACLE_HOME/bin:$PATH
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib64:/usr/lib64:/usr/local/lib64:/usr/X11R6/lib64/
export CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib
export LC_ALL=zh_CN.UTF_8
export NLS_LANG='SIMPLIFIED CHINESE_CHINA.ZHS16GBK'
export equity_shinfo_sql="select a.id||'$|$'||a.bus_id from equity_shinfo a where rownum <10;"
#本行社基本信息表 EQUITY_BANK_INF
export EQUITY_BANK_INF_SQL="select ID||'$|$'||BUS_ID||'$|$'||NAME||'$|$'||TYPE||'$|$'||CARD_TYPE||'$|$'||CARD_NO||'$|$'||LEGEL||'$|$'||ADDRESS||'$|$'||ESTAB_DATE||'$|$'||STOCK||'$|$'||YEAR||'$|$'||INVEST_STOCK||'$|$'||PERFER_STOCK||'$|$'||BUSINESS_TERM||'$|$'||STOCK_JE_LAST_YEAR||'$|$'||TOTAL_ASSETS||'$|$'||CAPITAL_QUAR1||'$|$'||CAPITAL_QUAR2||'$|$'||CAPITAL_QUAR3||'$|$'||CAPITAL_QUAR4||'$|$'||SUPERVISE_GRATE||'$|$'||REMARK||'$|$'||REMARK1||'$|$'||REMARK2||'$|$'||REMARK3||'$|$'||REMARK4||'$|$'||IS_EFFECT||'$|$'||WF_STATUS||'$|$'||WF_DATE||'$|$'||CREATE_ORG||'$|$'||CREATE_USER||'$|$'||CAPITAL||'$|$'||IS_HIGH_RISK||'$|$'||IS_LISTED||'$|$'||CURRENT_PRICE from EQUITY_BANK_INF where WF_STATUS='2';"
export EQUITY_BANK_INF_COUNT_SQL="select count(*)from EQUITY_BANK_INF  where WF_STATUS='2';"
#黑名单信息表 EQUITY_BLACK_LIST_INF
export EQUITY_BLACK_LIST_INF_SQL="select ID||'$|$'||BUS_ID||'$|$'||NAME||'$|$'||CUST_TYPE||'$|$'||CARD_TYPE||'$|$'||CARD_NO||'$|$'||IS_EFFECT||'$|$'||ADDR||'$|$'||BELONG_ORG||'$|$'||BLACK_RSON||'$|$'||OTHER_RSON||'$|$'||CHOOSE_RSON||'$|$'||DETIAL_RSON||'$|$'||REMARK||'$|$'||REMARK1||'$|$'||REMARK2||'$|$'||REMARK3||'$|$'||REMARK4||'$|$'||CREATE_ORG||'$|$'||CREATE_USER||'$|$'||DATA_FROM||'$|$'||OLD_NAME||'$|$'||WF_STATUS from EQUITY_BLACK_LIST_INF where WF_STATUS='2';"
export EQUITY_BLACK_LIST_INF_COUNT_SQL="select count(*)from EQUITY_BLACK_LIST_INF where WF_STATUS='2';"
if [ ${1} = "EQUITY_BANK_INF" ]; then
    export EXCUTE_SQL=${EQUITY_BANK_INF_SQL}
    export EXCUTE_COUNT_SQL=${EQUITY_BANK_INF_COUNT_SQL}
elif [ ${1} = "EQUITY_BLACK_LIST_INF" ]; then
    export EXCUTE_SQL=${EQUITY_BLACK_LIST_INF_SQL}
    export EXCUTE_COUNT_SQL=${EQUITY_BLACK_LIST_INF_COUNT_SQL}
else
    echo "未匹配到对应的表"
fi
sqlplus equity/equity <<EOF
set echo off
set feedback off
set pagesize 0
set linesize 4000
set trimspool on
set term off
set termout on
set heading off
spool $DATA_FILE
$EXCUTE_SQL
spool off                  
exit;
EOF
sed -i '/^SQL/d' $DATA_FILE
sed -i '/^$/d' $DATA_FILE
export COUNT_RESULT=`
sqlplus -S equity/equity <<COUNT
set echo off
set term off
set heading off
${EXCUTE_COUNT_SQL}
exit;
COUNT
`
echo "<?xml version=\"1.0\" encoding=\"UTF-8\"?>
        <CTLFILES>
                <CTLFILE>
                        <FILE_NAME>${S}${1}${LOGO}${ADD}.dat</ FILE_NAME>
                        <TABLE_NAME>${1}</TABLE_NAME>
                        <SYS_NAME>股权管理系统</SYS_NAME>
                        <DATA_DT>${FILE_DATE}</DATA_DT>
                        <LOAD_TIME>${FILE_TIME}</LOAD_TIME>
                        <ROW_COUNT>${COUNT_RESULT}</ROW_COUNT>
                        <LIST_SEP>&|&</LIST_SEP>
                </CTLFILE>
        </CTLFILES>" > $CTL_FILE
echo 0
exit 0

4、本地表信息文件传到其他服务器

#!/bin/bash
 
#SFTP配置信息
#用户名
export USER='ftpcs'
#密码
export PASSWORD='123'
#待上传文件根目录
export FILE_PATH='/hqtTest/'
export FILE_DATE=$(date +%Y%m%d)
export SRCDIR=${FILE_PATH}${FILE_DATE}
#FTP目录
DESDIR='/u01/oradata/data/export'
#IP
IP='10.2.2.12'
#端口
PORT='22'

#获取文件
cd ${SRCDIR} ;
echo $SRCDIR
#目录下的所有文件
#FILES=`ls` 
#查找目录下,指定后缀的文件集合,支持通配符
FILES=`find ${SRCDIR} -name '*.*'`
 
#for FILE in ${FILES}
#do
#    echo ${FILE}
#    #发送文件 (关键部分)
#    lftp -u ${USER},${PASSWORD} sftp://${IP}:${PORT} <<EOF
#    cd ${DESDIR}/
#    lcd ${SRCDIR}
#    mput ${FILE}
#    by
#EOF

ftp -v -n ${IP} <<EOF
    user ${USER} ${PASSWORD}
    binary
    hash
    cd ${DESDIR}/
    lcd ${SRCDIR}
    prompt
    mput *
    bye
EOF
done


 

定时任务(卸数,上传数据) 对应文章“定时任务(卸数,上传数据)”的脚本,支持在服务器间上传卸载数据 立即下载

相关推荐

shell脚本卸载数据模板(Oracle)

脚本只需配置/etl/sql/sql_mb.txt模板中的SQL语句,以及配置/etl/sql/filename.txt文件中对应的文件名称即可将数据卸载到对应文件名称的文本文档中,配置自由。 脚本中包括数据卸载,编码转换(GBK转UTF8),获取批次号(不同批次卸数使用),尾行加行数,FTP上传、以及增加注释了文件切割成多个文件的语句(针对大文件进行切割使用)。 注意:配置/etl/shell/config中的环境信息

数据仓库卸数(网银系统数据库)

网银系统卸数 概念 ETL中文名为数据抽取、转换和加载。ETL负责将分布的、异构数据源中的数据,如关系数据、平面数据文件等抽取到临时中间层后进行清洗、转换、集成,最后加载到数据仓库或者数据集市中,成为联机分析处理、数据挖掘的基础。ETL是一个长期的过程,只有不断发现问题并解决问题,才能使etl运行效率更高,为项目后期开发提供准确的数据。而银行系统的网银ETL卸数,是将网银系统的全部数据抽取、清洗、转换并最终加载到数据集成平台仓库中以供数据团队提数分析等工作。 卸数框架方法流程 卸数效果 可循环

cug-jdc的博客 1万+

CISP-PTE考前实操练习题

CISP-PTE考前学习练习题目,渗透测试功工程师

2301_79546223的博客 2003

Oracle通过spool命令导出.dat数据,及通过Shell脚本定时任务执行卸数

这篇文章看起来有点简陋小白,但是如果你也遇到了这样的问题需求,仔细把它看完,对你一定有所帮助。 首次写shell脚本,语法很菜,希望大家指点跟进 我在这不多废话,开始 spool脚本 首先spool脚本常用命令: spool C:\Users\AnYi\Desktop\ODS\a.dat--文件生成位置 set colsep '@|@'--输出分隔符(建议在sql中分隔:||'@|@'||如下:) set echo off--显示命令 set feedback on--处理的记录条数 set pagesiz

weixin_45106532的博客 4017

如何通过插值法计算cell delay?

插值法的公式:Z = A + B * X + C * Y + D * X * Y,其中X为input transition,Y为output load,A、B、C、D为四个参数,Z为delay值。从而得到Z=-0.086176 + 11.5493 * x + 0.65917 * y - 24.859 * x * y,当X=0.014930、Y=0.296311时,得到Z=0.1716ns。从而得到A = 0.08075,B = 3.47539,C = 0.04008,D = 0.01648。

芯冰乐 1077

单片机应用案例:ESP32 搭配 BH1750 光强传感器和 Web 服务器

在该应用案例中,我们将使用 ESP32 开发板作为主控制器,BH1750 光强传感器用于采集环境光强度数据,并通过 Web 服务器展示采集到的数据。步骤一:购买材料步骤二:连接硬件步骤三:编写代码我们将使用 Arduino IDE 编写代码,以下是主要代码:// WiFi 设置const char* ssid = “你的 WiFi 名称”;const char* password = “密码”;// Web 服务器实例// BH1750 实例// 获取当前光强度数据。

RlDart的博客 813

SHELL+SQLLDR读取文件更新数据至ORACLE

SHELL+SQLLDR读取文件更新数据至ORACLESQLLDR实现目标数据源文件test.txtsqlldr的test.ctl文件解释:shell代码:输入两个参数日期、表名--->执行:从指定路径读取数据源文件,读取数据库的表结构(可空和不可空等),创建该表对应的ctl文件,执行sqlldr脚本,完成数据插入-->返回数据是否全部成功插入 SQLLDR 实现目标 1.拿到一个te...

yisuoyanyulou1314的博客 3155

在Simulink中实现基于深度强化学习的控制算法仿真建模

通过上述步骤,你可以在Simulink中实现基于深度强化学习的控制算法仿真建模。这种方法适用于许多复杂的控制问题,尤其是当传统控制方法难以找到有效解决方案时。随着经验的积累,你可以进一步探索不同的深度强化学习算法及其变种,以适应更广泛的应用场景。此外,还可以结合其他先进技术(如迁移学习、多智能体协作等),提升模型的表现能力。

amy_mhd的博客 416

手动卸数+传输文件+入库

sh maindownload.sh 日期 sql名不加.sql后缀 系统名 这样就在data目录下生成卸数文件了 然后sftp传到exchr对应目录下 先cd到要传输文件的那个目录下,然后sftp登陆,命令是 sftp 用户名@id,然后不免密的输入密码,免密的直接就进去了,然后cd到你想把文件放到哪个目录的那个目录,然后put 文件名,就搞定了 如果发现报错文件不存在,就lpwd一下看...

luobida222的专栏 2042

VTK 显示大量点云数据及交互(点云拾取、着色、测量等)功能

VTK (Visualization Toolkit) 是一个强大的开源可视化库,非常适合处理点云数据。下面将介绍如何使用 VTK 显示大量点云数据,并实现点云拾取、着色、测量等功能。

深之JohnChen的专栏 2001

探索gtwr of mgtwr in python

代码】探索gtwr of GWmodel in python。

m0_46268055的博客 3388

shell中sqlldr、ctl的基本使用与示例

sqlldr 在shell脚本中,向oracle数据库表插入数据 要先确认环境是否有sqlldr命令 cvs、txt文件示例 "编码","订购状态","产品编码","产品订购实例ID","订购生效时间","订购失效时间","计费开始时间","受理工号","BBOSS商品名称","商品规格编码","商品实例ID","产品名称","产品规格编码","产品订购实例ID" "3511143538","0","111601","9004714567","20181229170033","2099123123

谁的博客 7719

PCL 直通滤波

内容抄自优快云点云侠:[【2024最新版】PCL点云处理算法汇总(C++长期更新版)](https://blog.youkuaiyun.com/qq_36686437/article/details/114160640)。质量无忧,永久免费,可放心复制粘贴。

m0_51204289的博客 905

shell脚本_sqlldr导入数据

需要切换到oracle用户执行命令。

小太阳的代码之路 601

把 LangGraph 当“工作流引擎”用:与传统 BPM 的差异与融合策略

首先,我们来回顾一下有限状态机(FSM)的基本定义——一个 FSM 可以用一个五元组MQΣδq0FMQΣδq0​FQQQ有限状态集合,包含 FSM 所有可能的状态;Σ\SigmaΣ有限输入字母表,包含 FSM 所有可能的输入;δ\deltaδ状态转移函数,定义了 FSM 从当前状态q∈Qq \in Qq∈Q接收输入σ∈Σσ∈Σ后,转移到的下一个状态q′∈Qq' \in Qq′∈Q,即δQ×Σ→QδQ×Σ→Q。

AI 原生应用开发的博客 227

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

编写shell脚本(awk)分析sqlldr入库日志

需求 对于使用sqlldr入库异常需要手动处理,由于数据量较大,错误日志会记录每一条数据入库失败的原因,所以直接查看日志,对于整体入库异常分析不够全面,所以编写脚本分析日志。 案列: 表prod_offer_merger_relation 数据文件数据总数:9653 入库数:9134 入库失败数:519 账期:20190325 步骤 1查看日志 wc -l INSER...

qq_39866521的博客 1015

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

shell脚本linux下sqlldr,sqlldr配合shell解决sqlldr 控制文件中引入变量的方案

sqlldr配合shell解决sqlldr 控制文件中引入变量的方案适用场景:存在含有日期(或固定格式)的文件名的多个文件,使用oracle sqlldr将文件本身内容及文件名相关信息导入oracle数据库表,即就是解决oracle sqlldr中使用外部变量这一问题。(一)创建原始控制文件模板[oracle@hostname sqlldr]$ pwd/opt/mydir/sqlldr[oracl...

weixin_33201531的博客 1296

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

shell向Oracle导入数据有sqlldr,向mysql怎么导入呢?

如题,sqlldr不多赘述。 平时都是向Oracle写数据,突然想到如果是mysql呢?有没有类似sqlldr的插件呢? 我没找到插件,只是mysql操作比较简单,直接在命令行,导入文件就可以了。 mysql -uusername -ppasswd -e "command;command"     参考资料: 1、shell操作mysql http://blog.youkuaiyun.com

JkunZhang的专栏 3457

用shell脚本写sqlldr入库,如何在sqlldr里面引入外部变量

简单的应用场景:文件内容入库,但是文件名字不能获取到回调到数据库中,可以重新定义一个新的ctl文件,用心的进行入库 ctl文件编写ACCT.ctl load data Append into table TBCS.ACCT fields terminated by '|' TRAILING NULLCOLS ( acct_id, cust_id, payment_type, REMARK, CUST_CLASS, ACCT_CODE, filename constant "fi...

interface_comm的博客 1400

oracle数据导入dat文件(使用shell脚本sqlldr导入)

sqlldr导入dat文件,shell脚本封装

weixin_45861900的博客 3663

使用SQLLDR导入日志

[code="java"] Load data --加载数据 append into table TEST --数据表TEST fields terminated by ':' --每行日志以“:”分隔 trailing nullcols (----下面为表中属性 DNAME "nvl(:DNAME,'-')", --如果DNAME为null,则插入默认...

GhostWolf 1599

shell脚本linux下sqlldr,在linux下安装sqlldr命令

从Oracle服务器上拷贝相应的sqlldr执行程序。1> scp /usr/local/oracle/sqlldr2> mkdir -p /usr/local/oracle/rdbms/mesgcd /usr/local/oracle/rdbms/mesg/ scp ./ulus.msb进入etc/profile修改环境变量vim etc/profile 按i编辑 es...

weixin_29634081的博客 494

linux 脚本 sqlldr,Sqlldr一般语法和shell脚本格式

sqlldr control=D:depms_emer_ctl.txt log=F:depms_emer_log.txt bad=F:depms_emer_BAD.txt rows=1000LOAD DATAINFILE 'F:test.dat'INTO TABLE dw.DEPMS_EMERTRUNCATEfields terminated by '|$|' OPTIONALLY ENCLOS...

weixin_39867200的博客 259

sqlldr导入中文状态下的timestamp字段

在使用sqlldr导入timestamp字段时,如果服务器字符集与会话的字符集不同时,会导致导入失败,提示无效的月份。只需要修改shell会话连接的字符集,即可完成导入。 1、确认timestamp格式 通过 nls_database_parameters 视图可以看到timestamp的格式 在sqlldr的ctl文件中,time字段的类型为 TIMESTAMP + 上图中的结果 2、修改shell连接的字符集 export NLS_LANG=“Simplified Chinese_china.ZHS

li916227164的博客 2287

SQLLDR导入乱码问题的解决

场景: 业务部门要求导入一批数据,是CSV格式的,大家就想到了EXCEL格式可以打开,但悲剧的是该批数据超过10万条,用EXCEL处理显然行不通,更悲剧的是打开直接就是乱码。于是笔者接了单子,筹划用SQLLDR进行导入。话说7年前做野村证券的BATCH系统时大量的使用了UNIX SHELL调用ORACLE SQLLDR功能,但若干年没用了居然对预防有些生...

weixin_33869377的博客 905
上一篇: GIT提交代码
下一篇: 国民经济行业导入数据库码表
庆涛1992
博客等级 码龄9年 37粉丝 19原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值