SQLSERVER:大容量导入数据时保留标识值 (SQL Server)

本文详细介绍使用SQL Server通过BCP命令、BULK INSERT语句及OPENROWSET函数三种方式实现大容量数据导入同时保留标识值的具体步骤及示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

从MSDN上看到实现大容量导入数据时保留标识值得方法包含三种:

MSDN链接地址为:https://msdn.microsoft.com/zh-cn/library/ms178129.aspx

感觉MSDN上给的列子都没有数据,有些demo不直接,所以这里我要写例子来实现这三种方式。

  1. bcp
  2. Bulk Insert From .. With(...)
  3. Insert Into ... (field1name,field2name...) select field1name,field2name... from openrowset(bulk 'xxx',formatfile='xxx')

下边我们就三种方式展开测试:

整理数据源:

 1 create table dbo.Member(
 2     id bigint  identity(1,1) primary key not null,
 3     name nvarchar(64) not null,
 4     nickname nvarchar(64) null,
 5     pwd nvarchar(64) not  null,
 6     moneyicon decimal(18,2) null,
 7     gender char(3) not null default(1),
 8     birthday datetime null,
 9     createtime datetime not null default(getdate())
10 )
11 
12 insert dbo.Member(name,nickname,pwd,moneyicon,gender,birthday,createtime)values('yy3b2007com','cctext','123456',9000999999999.99,'1','1987-01-01',getdate());
13 insert dbo.Member(name,nickname,pwd,moneyicon,gender,birthday,createtime)values('yy3b2007com1','cctext2','123456',9000999999999.99,'1','1987-01-01',getdate());
14 insert dbo.Member(name,nickname,pwd,moneyicon,gender,birthday,createtime)values('yy3b2007com11','cctext22','123456',9000999999999.99,'1','1987-01-01',getdate());
15 insert dbo.Member(name,nickname,pwd,moneyicon,gender,birthday,createtime)values('yy3b2007com111','cctext22','123456',9000999999999.99,'1','1987-01-01',getdate());
  • bcp 方式:

要是用bcp操作的话,我们需要在cmd中进行执行,太繁琐,所以我们采用xp_cmdshell方式来执行bcp命令操作。

在使用xp_cmdshell需要开启sqlserver show_advanced options 配置信息:

 1 -- 开启批量导入功能 xp_cmdshell
 2 -- find 'show advanced options' config option from sys.configurations
 3 select * from sys.configurations where name='show advanced options';    
 4 go
 5 exec sp_configure 'show_advanced options',1;
 6 reconfigure
 7 go 
 8 exec sp_configure 'xp_cmdshell',1;
 9 reconfigure
10 go
11 select * from sys.configurations where name='show advanced options';    

执行上边命令返回结果信息:

 

接下来,我们使用xp_cmdshell来执行bcp导出、导入数据操作:

 1 use test_bulkinsert;
 2 -- 导入 dbo.Member中记录到文件 d:/member.txt 中
 3 exec master..xp_cmdshell 'BCP test_bulkinsert.dbo.Member out d:/member.txt -c -S.\network -Usa -Pnew.1234'
 4 
 5 --begin transaction x1
 6 truncate table dbo.Member;
 7 select * from dbo.Member;
 8 exec master..xp_cmdshell 'bcp test_bulkinsert.dbo.Member in d:/member.txt -c -S.\network -Usa -Pnew.1234'
 9 select * from dbo.Member;
10 --rollback transaction x1;

执行后返回结果信息:

查看文件member.txt信息:

1 yy3b2007com cctext 123456 9000999999999.99 1 1987-01-01 00:00:00.000 2016-07-27 00:41:48.443
2 yy3b2007com1 cctext2 123456 9000999999999.99 1 1987-01-01 00:00:00.000 2016-07-27 00:41:48.447
3 yy3b2007com11 cctext22 123456 9000999999999.99 1 1987-01-01 00:00:00.000 2016-07-27 00:41:48.447
4 yy3b2007com111 cctext22 123456 9000999999999.99 1 1987-01-01 00:00:00.000 2016-07-27 00:41:48.447

备注:列之间使用'\t'间隔,换行符为‘\r\n’

上边的例子,导出导入的过程包含有id自增列,那么怎么实现导入过程中不包含自增列,让数据库内部自己维护呢?

我们需要使用formatfile---sqlserver格式化文件。具体怎么生成可以参考:https://msdn.microsoft.com/zh-cn/library/ms191516.aspx

格式化文件格式包含两种:一种是非xml格式,一种是xml格式。

A、导入member.txt数据源,并编辑。

执行命令:

use test_bulkinsert;
-- 导入 dbo.Member中记录到文件 d:/member.txt 中
exec master..xp_cmdshell 'BCP test_bulkinsert.dbo.Member out d:/member.txt -c -T -S.\network -Usa -Pnew.1234'

生成文件member.txt.

1    yy3b2007com    cctext    123456    9000999999999.99    1      1987-01-01 00:00:00.000    2016-07-27 01:39:58.180
2    yy3b2007com1    cctext2    123456    9000999999999.99    1      1987-01-01 00:00:00.000    2016-07-27 01:39:58.180
3    yy3b2007com11    cctext22    123456    9000999999999.99    1      1987-01-01 00:00:00.000    2016-07-27 01:39:58.180
4    yy3b2007com111    cctext22    123456    9000999999999.99    1      1987-01-01 00:00:00.000    2016-07-27 01:39:58.180

 

编辑为:

yy3b2007com cctext 123456 9000999999999.99 1 1987-01-01 00:00:00.000 2016-07-27 01:39:58.180
yy3b2007com1    cctext2    123456    9000999999999.99    1 1987-01-01 00:00:00.000    2016-07-27 01:39:58.180
yy3b2007com11    cctext22    123456    9000999999999.99    1 1987-01-01 00:00:00.000    2016-07-27 01:39:58.180
yy3b2007com111    cctext22    123456    9000999999999.99    1 1987-01-01 00:00:00.000    2016-07-27 01:39:58.180

B、生成非xml格式化文件:

  执行命令:

-- 生成文件member-f-c-x.xml文件,编辑为member-f-c-x-without-id.Xml
exec master..xp_cmdshell 'bcp test_bulkinsert.dbo.Member format nul -S.\network -Usa -Pnew.1234 -c -f d:/member-f-c.Xml -T'

 

修改非xml格式化文件member-f-c.Xml

原始文件信息为:

10.0
8
1       SQLCHAR             0       21      "\t"      1     id                       ""
2       SQLCHAR             0       128     "\t"      2     name                     Chinese_PRC_CI_AS
3       SQLCHAR             0       128     "\t"      3     nickname                 Chinese_PRC_CI_AS
4       SQLCHAR             0       128     "\t"      4     pwd                      Chinese_PRC_CI_AS
5       SQLCHAR             0       41      "\t"      5     moneyicon                ""
6       SQLCHAR             0       3       "\t"      6     gender                   Chinese_PRC_CI_AS
7       SQLCHAR             0       24      "\t"      7     birthday                 ""
8       SQLCHAR             0       24      "\r\n"    8     createtime               ""

修改为:

10.0
7
1       SQLCHAR             0       128     "\t"     2     name                     Chinese_PRC_CI_AS
2       SQLCHAR             0       128     "\t"     3     nickname                 Chinese_PRC_CI_AS
3       SQLCHAR             0       128     "\t"     4     pwd                      Chinese_PRC_CI_AS
4       SQLCHAR             0       41      "\t"     5     moneyicon                ""
5       SQLCHAR             0       3       "\t"     6     gender                   Chinese_PRC_CI_AS
6       SQLCHAR             0       24      "\t"     7     birthday                 ""
7       SQLCHAR             0       24      "\r\n"   8     createtime               ""

C、执行导入保留标识值:

1 truncate table dbo.Member;
2 select * from dbo.Member;
3 exec master..xp_cmdshell 'bcp test_bulkinsert.dbo.Member in d:/member.txt -f d:/member-f-c.xml -E -T -S.\network -Usa -Pnew.1234'
4 select * from dbo.Member;
  • Bulk Insert From .. With(...) 方式:

BULK INSERT微软官网上看到是SQLSERVER2008才开启的功能,但是仔细查看发现SQLSERVER2005也支持该操作。

DSDN语法参考英文地址:https://msdn.microsoft.com/en-us/library/ms188365.aspx

DSDN语法参考中文地址:https://msdn.microsoft.com/zh-cn/library/ms188365.aspx

A、生成xml格式化文件:

exec master..xp_cmdshell 'bcp test_bulkinsert.dbo.Member format nul -S.\network -Usa -Pnew.1234 -c -t\t -x -f d:/myTestFormatFiles.Xml -T'
myTestFormatFiles.Xml信息为:
<?xml version="1.0"?>
<BCPFORMAT xmlns="http://schemas.microsoft.com/sqlserver/2004/bulkload/format" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
 <RECORD>
  <FIELD ID="1" xsi:type="CharTerm" TERMINATOR="\t" MAX_LENGTH="21"/>
  <FIELD ID="2" xsi:type="CharTerm" TERMINATOR="\t" MAX_LENGTH="128" COLLATION="Chinese_PRC_CI_AS"/>
  <FIELD ID="3" xsi:type="CharTerm" TERMINATOR="\t" MAX_LENGTH="128" COLLATION="Chinese_PRC_CI_AS"/>
  <FIELD ID="4" xsi:type="CharTerm" TERMINATOR="\t" MAX_LENGTH="128" COLLATION="Chinese_PRC_CI_AS"/>
  <FIELD ID="5" xsi:type="CharTerm" TERMINATOR="\t" MAX_LENGTH="41"/>
  <FIELD ID="6" xsi:type="CharTerm" TERMINATOR="\t" MAX_LENGTH="3" COLLATION="Chinese_PRC_CI_AS"/>
  <FIELD ID="7" xsi:type="CharTerm" TERMINATOR="\t" MAX_LENGTH="24"/>
  <FIELD ID="8" xsi:type="CharTerm" TERMINATOR="\r\n" MAX_LENGTH="24"/>
 </RECORD>
 <ROW>
  <COLUMN SOURCE="1" NAME="id" xsi:type="SQLBIGINT"/>
  <COLUMN SOURCE="2" NAME="name" xsi:type="SQLNVARCHAR"/>
  <COLUMN SOURCE="3" NAME="nickname" xsi:type="SQLNVARCHAR"/>
  <COLUMN SOURCE="4" NAME="pwd" xsi:type="SQLNVARCHAR"/>
  <COLUMN SOURCE="5" NAME="moneyicon" xsi:type="SQLDECIMAL" PRECISION="18" SCALE="2"/>
  <COLUMN SOURCE="6" NAME="gender" xsi:type="SQLCHAR"/>
  <COLUMN SOURCE="7" NAME="birthday" xsi:type="SQLDATETIME"/>
  <COLUMN SOURCE="8" NAME="createtime" xsi:type="SQLDATETIME"/>
 </ROW>
</BCPFORMAT>

修改,并把修改后的信息保存在myTestFormatFiles_without_id.Xml。

<?xml version="1.0"?>
<BCPFORMAT xmlns="http://schemas.microsoft.com/sqlserver/2004/bulkload/format" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
 <RECORD>
  <FIELD ID="1" xsi:type="CharTerm" TERMINATOR="\t" MAX_LENGTH="128" COLLATION="Chinese_PRC_CI_AS"/>
  <FIELD ID="2" xsi:type="CharTerm" TERMINATOR="\t" MAX_LENGTH="128" COLLATION="Chinese_PRC_CI_AS"/>
  <FIELD ID="3" xsi:type="CharTerm" TERMINATOR="\t" MAX_LENGTH="128" COLLATION="Chinese_PRC_CI_AS"/>
  <FIELD ID="4" xsi:type="CharTerm" TERMINATOR="\t" MAX_LENGTH="41"/>
  <FIELD ID="5" xsi:type="CharTerm" TERMINATOR="\t" MAX_LENGTH="3" COLLATION="Chinese_PRC_CI_AS"/>
  <FIELD ID="6" xsi:type="CharTerm" TERMINATOR="\t" MAX_LENGTH="24"/>
  <FIELD ID="7" xsi:type="CharTerm" TERMINATOR="\r\n" MAX_LENGTH="24"/>
 </RECORD>
 <ROW>
  <COLUMN SOURCE="1" NAME="name" xsi:type="SQLNVARCHAR"/>
  <COLUMN SOURCE="2" NAME="nickname" xsi:type="SQLNVARCHAR"/>
  <COLUMN SOURCE="3" NAME="pwd" xsi:type="SQLNVARCHAR"/>
  <COLUMN SOURCE="4" NAME="moneyicon" xsi:type="SQLDECIMAL" PRECISION="18" SCALE="2"/>
  <COLUMN SOURCE="5" NAME="gender" xsi:type="SQLCHAR"/>
  <COLUMN SOURCE="6" NAME="birthday" xsi:type="SQLDATETIME"/>
  <COLUMN SOURCE="7" NAME="createtime" xsi:type="SQLDATETIME"/>
 </ROW>
</BCPFORMAT>

修改member.txt,并把修改后的信息保存在member_without_id.txt

yy3b2007com    cctext    123456    9000999999999.99    1      1987-01-01 00:00:00.000    2016-07-27 00:41:48.443
yy3b2007com1    cctext2    123456    9000999999999.99    1      1987-01-01 00:00:00.000    2016-07-27 00:41:48.447
yy3b2007com11    cctext22    123456    9000999999999.99    1      1987-01-01 00:00:00.000    2016-07-27 00:41:48.447
yy3b2007com111    cctext22    123456    9000999999999.99    1      1987-01-01 00:00:00.000    2016-07-27 00:41:48.447

B、执行插入命令:

use test_bulkinsert
truncate table dbo.Member;

bulk insert    dbo.Member
from 'd://member_without_id.txt'
with(
    formatfile='d://myTestFormatFiles_without_id.Xml'
)
select * from dbo.Member;
  • Insert Into ... (field1name,field2name...) select field1name,field2name... from openrowset(bulk 'xxx',formatfile='xxx') 方式:

可以使用Bulk Insert方式格式化文件,和数据文件来测试:

use test_bulkinsert
truncate table dbo.Member;

insert into dbo.Member(name,nickname,pwd,moneyicon,gender,birthday,createtime)
select * from 
openrowset(bulk 'd://member_without_id.txt',formatfile='d://myTestFormatFiles_without_id.Xml') as t


select * from dbo.Member;

以上就是SQLServer三种方式实现大容量导入数据时保留标识值的完整示例。

  • 完整代码测试:
USE [test_bulkinsert]
GO
/****** Object:  Table [dbo].[Member]    Script Date: 07/27/2016 02:07:26 ******/
IF  EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[DF__Member__gender__0EA330E9]') AND type = 'D')
BEGIN
ALTER TABLE [dbo].[Member] DROP CONSTRAINT [DF__Member__gender__0EA330E9]
END
GO
IF  EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[DF__Member__createti__0F975522]') AND type = 'D')
BEGIN
ALTER TABLE [dbo].[Member] DROP CONSTRAINT [DF__Member__createti__0F975522]
END
GO
IF  EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[Member]') AND type in (N'U'))
DROP TABLE [dbo].[Member]
GO
/****** Object:  Table [dbo].[Member]    Script Date: 07/27/2016 02:07:26 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[Member]') AND type in (N'U'))
BEGIN
CREATE TABLE [dbo].[Member](
    [id] [bigint] IDENTITY(1,1) NOT NULL,
    [name] [nvarchar](64) NOT NULL,
    [nickname] [nvarchar](64) NULL,
    [pwd] [nvarchar](64) NOT NULL,
    [moneyicon] [decimal](18, 2) NULL,
    [gender] [char](3) NOT NULL DEFAULT ((1)),
    [birthday] [datetime] NULL,
    [createtime] [datetime] NOT NULL DEFAULT (getdate()),
PRIMARY KEY CLUSTERED 
(
    [id] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY]
END
GO
SET ANSI_PADDING OFF
GO 

insert dbo.Member(name,nickname,pwd,moneyicon,gender,birthday,createtime)values('yy3b2007com','cctext','123456',9000999999999.99,'1','1987-01-01',getdate());
insert dbo.Member(name,nickname,pwd,moneyicon,gender,birthday,createtime)values('yy3b2007com1','cctext2','123456',9000999999999.99,'1','1987-01-01',getdate());
insert dbo.Member(name,nickname,pwd,moneyicon,gender,birthday,createtime)values('yy3b2007com11','cctext22','123456',9000999999999.99,'1','1987-01-01',getdate());
insert dbo.Member(name,nickname,pwd,moneyicon,gender,birthday,createtime)values('yy3b2007com111','cctext22','123456',9000999999999.99,'1','1987-01-01',getdate());

-- 开启批量导入功能 xp_cmdshell
-- find 'show advanced options' config option from sys.configurations
select * from sys.configurations where name='show advanced options';    
go
exec sp_configure 'show_advanced options',1;
reconfigure
go 
exec sp_configure 'xp_cmdshell',1;
reconfigure
go
select * from sys.configurations where name='show advanced options';    


use test_bulkinsert;
-- 导入 dbo.Member中记录到文件 d:/member.txt 中
exec master..xp_cmdshell 'BCP test_bulkinsert.dbo.Member out d:/member.txt -c -T -S.\network -Usa -Pnew.1234'
-- 生成文件member-f-c-x.xml文件,编辑为member-f-c-x-without-id.Xml
exec master..xp_cmdshell 'bcp test_bulkinsert.dbo.Member format nul -S.\network -Usa -Pnew.1234 -c -f d:/member-f-c.Xml -T'
--begin transaction x1
truncate table dbo.Member;
select * from dbo.Member;
exec master..xp_cmdshell 'bcp test_bulkinsert.dbo.Member in d:/member.txt -f d:/member-f-c.xml -E -T -S.\network -Usa -Pnew.1234'
select * from dbo.Member;
--rollback transaction x1;







exec master..xp_cmdshell 'bcp test_bulkinsert.dbo.Member format nul -S.\network -Usa -Pnew.1234 -c -t\t -x -f d:/myTestFormatFiles.Xml -T'

use test_bulkinsert
truncate table dbo.Member;

bulk insert    dbo.Member
from 'd://member_without_id.txt'
with(
    formatfile='d://myTestFormatFiles_without_id.Xml'
)
select * from dbo.Member;


use test_bulkinsert
truncate table dbo.Member;

insert into dbo.Member(name,nickname,pwd,moneyicon,gender,birthday,createtime)
select * from 
openrowset(bulk 'd://member_without_id.txt',formatfile='d://myTestFormatFiles_without_id.Xml') as t


select * from dbo.Member;
  • 具体参考资料:

MSDN BULK INSERT (Transact-SQL):https://msdn.microsoft.com/zh-cn/zh-ch/library/ms188365.aspx

MSDN 大容量导入数据时保留标识值 (SQL Server):https://msdn.microsoft.com/zh-cn/library/ms186335.aspx

MSDN 创建格式化文件 (SQL Server):https://msdn.microsoft.com/zh-cn/library/ms191516.aspx

MSDN 使用格式化文件大容量导入数据 (SQL Server):https://msdn.microsoft.com/zh-cn/library/ms178129.aspx

<think>好的,我需要帮助用户了解如何使用bcp命令将文件导入SQL Server。根据用户提供的引用内容,我需要整理出相关的语法和示例。首先,我需要确认bcp的基本用法,特别是导入数据的命令结构。 根据引用[1],bcp可以在SQL Server实例和数据文件之间复制数据,特别是将平面文件导入表中。引用[2]中的示例展示了导入命令的基本格式,比如使用“in”关键字,指定数据库、表、文件路径,以及一些选项如-T、-c、-t、-S和-b。引用[3]解释了-S参数的作用,用于指定服务器或实例名称。引用[4]中的示例虽然主要是导出,但结构类似,可以辅助理解参数的使用。 接下来,我需要整理出导入的基本语法。基本结构应该是:bcp 数据库.架构.表名 in 文件路径 后面跟参数。参数包括身份验证选项(-T表示信任连接,或者-U和-P指定用户名密码)、字段终止符(-t)、行终止符(-r)、批处理大小(-b)、服务器指定(-S)等。需要解释每个常用参数的作用,并给出示例。 用户可能需要具体的示例,所以需要参考引用[2]中的例子,比如使用逗号或感叹号作为分隔符的情况。同,注意路径和参数的顺序是否正确,比如-T的位置是否影响。另外,要注意文件格式是否与表结构匹配,比如字段顺序和数据类型是否一致,避免导入错误。 还需要提醒用户可能遇到的问题,例如权限问题,需要确保SQL Server有权限访问目标文件;分隔符是否一致;如果文件有列标题,可能需要使用-F 2跳过第一行;以及大容量导入的错误处理,比如使用错误文件(-e)记录错误信息。 最后,需要根据引用内容正确标注引用来源,比如参数解释引用[3],示例引用[2]和[4]。确保回答结构清晰,分步骤说明,并包含实际示例,帮助用户理解和应用。</think>以下是如何使用`bcp`命令将文件导入SQL Server的详细指南: ### 一、基础语法格式 ```dos bcp 数据库名.架构名.表名 in 文件路径 [-S 服务器名] [-U 用户名 -P 密码 | -T] [-c | -n] [-t 字段分隔符] [-r 行分隔符] [-b 批处理大小] ``` ### 二、核心参数说明 1. **身份验证** - `-T`:使用Windows身份验证(推荐) - `-U username -P password`:SQL Server账号验证[^3] 2. **格式控制** - `-c`:使用字符数据类型(适合文本文件) - `-n`:使用本机数据库数据类型 - `-t ","`:指定字段分隔符(默认`\t`)[^2] - `-r "\n"`:指定行分隔符(默认`\n`) 3. **性能控制** - `-b 10000`:每批导入行数(默认全部) - `-k`:保留 4. **连接参数** - `-S localhost\实例名`:指定服务器和实例[^3] ### 三、典型应用示例 #### 示例1:导入CSV文件(逗号分隔) ```dos bcp MyDB.dbo.Employee in C:\data.csv -T -c -t, -S localhost -b 5000 ``` 解析:将`data.csv`导入本地SQL Server的`Employee`表,使用Windows认证,每批导入5000行[^2] #### 示例2:导入竖线分隔文件 ```dos bcp TestDB.dbo.Orders in D:\orders.txt -U sa -P 123456 -c -t "|" -r 0x0a -S 192.168.1.100 ``` 解析:连接远程服务器(IP:192.168.1.100),使用竖线作为列分隔符,明确指定换行符为`\n`[^3] #### 示例3:带列映射的导入 ```dos bcp MyDB.dbo.Customer in C:\cust.dat -T -n -E -m 10 -e error.log ``` 解析: - `-n`:使用本机数据格式 - `-E`:保留标识 - `-m 10`:最多允许10个错误 - `-e error.log`:错误日志输出[^1] ### 四、常见问题解决 1. **权限问题** - 确保SQL Server服务账号有文件读取权限 - 使用`xp_cmdshell`执行需启用配置: ```sql EXEC sp_configure 'show advanced options',1 RECONFIGURE EXEC sp_configure 'xp_cmdshell',1 RECONFIGURE ``` 2. **编码问题** 中文乱码添加`-C 65001`参数指定UTF8编码 3. **数据截断** 使用格式文件精确控制列映射: ```dos bcp MyDB.dbo.Table1 in data.txt -f format.fmt -T ``` ### 五、最佳实践建议 1. 大数据导入: - 先禁用索引 `ALTER INDEX ALL ON TableName DISABLE` - 设置恢复模式为`BULK_LOGGED` - 使用`-b`分批提交事务 2. 性能优化: ```dos bcp AdventureWorks.dbo.Sales in sales.dat -T -n -S SRV01 -a 16384 -h "TABLOCK" ``` - `-a 16384`:设置网络包大小 - `-h "TABLOCK"`:使用表级锁[^1]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值