金仓数据库KingbaseES客户端应用参考手册--8. sys_bulkload

8.1. 简介:

sys_bulkload是KingbaseES提供的快速加载数据的命令行工具。用户使用sys_bulkload工具能够把一定格式的文本数据简单、快速的加载到KingbaseES数据库中,或将KingbaseES数据库中的数据快速导出到CSV文件中。使用前需要用户手动创建sys_bulkload插件,需要说明的是sys_bulkload工具是随数据库版本一同发布的,使用时请使用对应发布的数据库版本,其他数据版本则不保证能正常工作。

8.2. 命令行参数:

sys_bulkload [ options ][ control_file_path ]

8.3. 参数说明:

options参数

加载选项

-i in_file --input in_file

指定待加载文件或需要导出数据的表,同配置文件的INPUT选项。

-O output_table --output output_table

快速加载的目标表或者接收导出数据的文件路径,同配置文件的OUTPUT选项。

-l log_file --logfile log_file

结果日志路径,同配置文件中的LOGFILE选项。

-P bad_file --parse-badfile bad_file

记录无法正确解析或写失败的日志路径,同配置文件的PARSE_BADFILE选项。

-u duplicate_badfile --duplicate-badfile duplicate_badfile

重建索引时与唯一性约束冲突而导入失败的记录的写入路径,同配置文件中的DUPLICATE_BADFILE选项。

-o optional --option optional

任何在配置文件中任何可使用的选项,参见 配置文件_ 。可以传入多次选项。对于加载的必填选项如input, output等,为指定参数的方便和简洁已在上面提供了单独长短项配置。

连接选项

-d dbname --dbname dbname

指定连接的数据库。如未指定,数据库名将从环境变量KINGBASE_DATABASE中读取。如未设置该环境变量,使用连接的用户名。

-h host --host host

指定运行服务器的主机名。如果值以/开始,被用作unix域套接字的目录。

-p port --port port

指定TCP的端口号或者本地unix域套接字文件扩展名的服务器监听端口号。

-U username --username username

指定连接的用户名。

-W password --password password

连接用户的数据库登录密码。 需要说明的是-W 后面必须指定密码,否则会报错。

一般选项

-e --echo

输出发送给服务器的命令。

-E --elevel

设置输出信息的级别,其中级别包括:DEBUG, INFO, NOTICE, WARNING, ERROR, LOG, FATAL, and PANIC。默认为INFO。

--help

输出帮助信息

--version

输出版本号

control_file_path参数

指定配置文件的路径。配置文件写法参见 配置文件_

使用说明:

快速加载工具sys_bulkload可以通过短选项、长选项、配置文件三种方式来指定配置加载选项。由于加载的选项比较多,并且一些加载选项的信息比较固定和反复使用,可以把这些加载选项配置在配置文件中,直接指定配置文件的路径。配置加载选项规则如下:

  1. 启动参数的短选项和长选项是等价的。

  2. 在启动参数选项中仍然可以指定配置文件中配置的加载选项,其作用主要是临时替换配置文件的选项,以避免去修改配置文件中的选项,配置文件和启动参数同时指定则以启动参数指定为准。

  3. 如果使用启动参数则需要注意input,output,logfile,parse_badfile,duplicate_badfile不能多次指定,否则报错:specified only once。其他选项可以多次指定,并且以后指定的选项为准。

8.4. 配置文件:

功能:

包含了加载数据时所需要的一些配置。导入时只需要将配置文件的路径 + 文件名作为参数传入快速加载提供的系统函数或可执行程序即可。

配置文件中参数选项说明:

必填参数

TYPE = CSV | TEXT | BINARY | DB

加载的数据源的类型

CSV

从CSV格式的文本文件加载数据

TEXT

从TEXT格式的文本文件加载数据

BINARY

从二进制格式的文件加载数据

DB

从数据库的表中导出数据

INPUT = PATH | [schema_name.] table_name

需要导入的数据文件路径或者导出数据的源表

PATH

需要导入的数据源文件路径。如果是相对路径,在控制文件中指定时,它将与控制文件相同;当在命令行参数中指定时,相对于当前工作目录。KingbaseES服务器的用户必须具有该文件的读取权限。在“TYPE = CSV | TEXT | BINARY”时可用。

[schema_name.] table_name

需要导出数据的表名。仅在“TYPE = DB”时可用。

OUTPUT = [schema_name.] table_name | PATH

指定将数据导入的目标表或者目标文件。

[schema_name.] table_name

导入数据的表名。在“ TYPE = CSV | TEXT | BINARY ”时可用。

PATH

导出数据的文件路径。如果是相对路径,在控制文件中指定时,它将与控制文件相同;当在命令行参数中指定时,相对于当前工作目录。KingbaseES服务器的用户必须具有该文件的读取权限。仅在“TYPE = DB”时可用。

LOGFILE = PATH

指定一个文件记录日志。如果指定为相对路径,则指定规则与INPUT相同。默认值为$KINGBASE_DATA/sys_bulkload/<timestamp>_<dbname>_<schema>_<table>.log

非必填参数

WRITER = BUFFERED | CSV_FILE

指定数据的加载方式,默认值为 BUFFERED。

BUFFERED

通过共享缓冲区将数据加载到表中。使用共享缓冲区编写WAL日志,并可使用KingbaseES的WAL日志进行恢复。

CSV_FILE

当数据的加载方式指定为CSV_FILE时,表示将数据库中的数据导出到CSV格式的文本文件中,该参数一般与“TYPE = DB”配合使用。

LIMIT = n

LIMIT只在导入数据文件时有效,加载n行即停止加载。默认值为最大的64位整数(即(2^64)/2-1 = 9223372036854775807),当n为0或默认值时表示不限制加载行数。

ENCODING = encoding

指定输入数据的编码格式,检查指定的编码格式是否合法。默认不检查。若有需要,转化输入文件的格式为数据库的编码格式。如果可以确保输入文件格式与数据库格式一致,不指定该选项,会有助于加载速度的提高,因为会忽略字符集的检查和转化。配置文件中ENCODING选项与数据库编码选项的转化关系详见下表。

配置文件中Encoding选项指定

SQL ASCII

non-SQL ASCII

未指定

既不检查也不转化

既不检查也不转化

SQL_ASCII

既不检查也不转化

只检查

非SQL_ASCII,与数据库一致

只检查

只检查

非SQL_ASCII,与数据库不一致

只检查

检查并转化

CHECK_CONSTRAINTS = YES | NO

指定加载时是否进行约束检查(只检查check约束),默认为NO。 注: 当前不支持分区约束检查,所以直接插入分区时需要保证数据正确。

PARSE_ERRORS = n

允许出现的错误次数。若错误次数超过该设置值,则快速加载退出运行。-1表示不限制错误个数,0为默认值,表示不允许错误,其他表示允许的错误次数。

FILTER = [schema_name.] function_name[(arg_value,...)]

只在导入数据文件时有效,指定过滤函数用来转换输入文件的每行,如果函数名在数据库中唯一,可以忽略函数的参数类型定义。如果该选项未指定,输入数据将直接被解析到目标表中。

DUPLICATE_ERRORS = n

允许违反唯一约束的忽略的元组个数。冲突的元组将从表中删除并被记录在重复失败的文件中。如果大于等于重复记录数,记录会被回滚。默认值为0,表示不允许重复记录数,-1表示忽略所有错误。BUFFERED模式不支持该参数,指定时会被忽略。

ON_DUPLICATE_KEEP = NEW | OLD

执行元组如何处理违反唯一约束。被删除的元组会被记录在出错文件中。设置了该选项,同样需要设置DUPLOCATE_ERRORS大于0。默认值为NEW。

NEW

采用输入文件中的最新一条记录的数据替换表中原有的数据。

OLD

保持表中原有数据,删除输入文件中的元组。

PARSE_BADFILE = PATH

指定一个文件路径(若指定路径的文件不存在则自动创建一个新文件),默认值与bulkload工具同目录,文件名为导入数据文件的文件名+”.bad”后缀的文件。保存数据文件中解析失败的数据行。若在数据文件解析的过程中解析失败,则该数据行追加记录到该文件。

DUPLICATE_BADFILE = PATH

指定一个文件路径(若指定路径的文件不存在则自动创建一个新文件),默认值与bulkload工具同目录,文件名为导入数据的文件名+”.dupbad”后缀的文件。若存在不能被写入到数据库的元组,则该元组对应的数据文件中的行追加记录到该文件。例如在数据导入过程中元组违背了约束(唯一,主键,非空,check)原则,则该元组不能写入+”.dupbad”后缀的文件路径。若在数据文件解析的过程中解析失败,则该数据行追加记录到该文件。

TRUNCATE = YES | NO

是否删除所有目标表中的数据,默认值为NO。多进程并行和TYPE为DB时不支持该选项。

VERBOSE = YES | NO

出错的元组是否写入到服务器日志中,默认值为NO。

DELIMITER = delimiter_character

间隔符,数据文件中列与列的间隔符,为单个字符,可以为任何可视化字符。默认值为逗号( , )。当需要一个TAB字符作为间隔符时,用双引号包裹TAB字符,如 DELIMITER = "" 。

QUOTE = quote_character

QUOTE在文件格式为CSV时有效,详情参考COPY语句。默认值为双引号( " )。

ESCAPE = escape_character

ESCAPE在文件格式为CSV时有效,详情参考COPY语句。默认值为反斜杠( \ )。

REINDEX = YES | NO

导入数据后是否重建索引。默认值为NO。

SKIP_LAST_EMPTY_VALUE = YES | NO

只对CSV格式有用,最后一列数据为空,是否把它当成一列数据,还是只是当分隔符。默认值为NO。用TPCH测试时生成的CSV文件在行末尾会加一个分隔符,指定该选项为YES,忽略最后一个分隔符。

SKIP = n

SKIP只在导入TEXT和CSV格式的数据文件时有效,TEXT和CSV格式的数据文件以行为单位进行导入,该选项可以设置跳过多少行数据,这些数据不导入数据库。默认值为0。

NULL = null_string

指定表示一个空值的字符串。默认值是一个没有引号的空字符串。

FORCE_NOT_NULL = column_name

该选项强制要求指定的列不为NULL值,默认情况下将空字符串按照NULL值处理,如果指定了该值,则空字符串不再按照NULL值处理,而是按照零长字符串处理。该选项不能与FILTER一起使用。

TRACKING_INTERVAL = n

指定导入过程中的时间间隔(单位为:秒),客户端反馈导入状况,防止在导入过程中因异常卡死,但用户不知道。默认为0,表示不反馈导入信息,其它非0整数为反馈时间间隔。

PROCESSOR_COUNT = n

指定服务器并行处理的进程数,具体参数值可根据用户服务器的CPU个数指定。默认值为1。TYPE为BIANRY方式不支持该参数,TYPE为DB方式时该参数恒为1。

ASYNC_WRITE = YES | NO

指定服务器的写文件是否独立的进程,默认值为NO。当WRITER为CSV_FILE时,如果PROCESSOR_COUNT大于1,则无论是否指定ASYNC_WRITE,其值始终为YES。

DUMP_PARAMS = YES | NO

是否将配置参数信息导入到日志文件中。默认值为YES。

SPECIFY_COLUMN = COLUMN NAME [FILTER | LLS],...

将数据加载到指定的列上, COLUMN NAME为具体的列名; 列名之前使用“,”分隔, 如果列名包含逗号则需要使用单引号将列名括起来, 如果列名包含单引号则需要使用'\'进行转义, 例如列名为i,'d则写为'i,\'d'。FILTER表示跳过对应的列, LLS表示对应字段加载方式使用lob location specify方式加载。

LLS方式,加载的内容不是文本本身所指的内容而是字段指定文件中的内容,对应的加载内容格式如下:

filename:offset:length

filename:为待加载的数据文件名,支持zip文件

offset:文件的偏移量

length:加载的数据量(字节数)

note:

如果加载的数据文件为zip等压缩文件,length长度一般为整个文件大小,否则会导致加载数据不完整,导出后无法正常解压缩。另外如果加载的对象为clob,zip等压缩文件是含有\0可能加载过程中会造成数据截断,所以clob不建议采用zip压缩文件进行加载。

LOB_DIR = PATH

LLS方式加载时,对应filename所对应文件所在的路径需要通过LOB_DIR指定。

CLIENT_LOB = TRUE | FALSE

远端LLS方式加载时,需要设置CLIENT_LOB = TRUE,默认值为FALSE。

SCHEMA_SAMEAS_USER = TRUE | FALSE

导入时INPUT参数可以指定[schema_name.] table_name, 如果对应用户只有一个与用户名相同的SCHEMA则可以设置SCHEMA_SAMEAS_USER=TRUE,这样可以不填写schema_name,bulkload会自动补全为username.table_name 这样做是为了兼容oracle。

REMOTE_FILE = PATH

远端加载导入时,INPUT填写为stdin,待加载的数据文件可以通过REMOTE_FILE指定。

其中配置文件中的选项不区分大小写,每个选项占用一行,选项和选项值之间通过等号进行连接,选项的值可以有引号也可以没有引号。如果字符串中有空格、等号等特殊值,则必须加引号。可以通过在正文内容前加入“#”表示注释该行后面的配置。具体格式如下:

PROCESSOR_COUNT = 4
DELIMITER = ","                       # Delimiter
QUOTE = "\""                          # Quoting character
LOGFILE = /home/bulkload.log
DUPLICATE_BADFIL = /home/bad.dat
TYPE = CSV
INPUT = /home/data.csv
OUTPUT = test_table

8.5. 支持的数据文件格式:

KingbaseES支持CSV、TEXT和BINARY三种数据文件格式。数据文件可以通过Copy To语句生成,三种文件格式详见"COPY"命令中文件格式部分。

8.6. 支持的写入方式:

KingbaseES提供了BUFFERED方式来写入数据库文件,如果导入的目标表已建立索引,要求加载完数据后索引仍然生效。

8.6.1. BUFFERED方式:

BUFFERED同普通Insert语句相比,优势在于节省了语句解析过程中带来的时间损耗。BUFFERED方式,(与INSERT一样)在目标表上添加Row Exclusive锁,因此所有与Row Execlusive锁互斥的操作均会被阻塞。具体如下表(未罗列出来的SQL语句均可顺利执行):

表 8.6.1 BUFFERED方式下的阻塞语句

不会被阻塞的SQL

被阻塞的SQL

被间 接阻塞的SQL(由于删 除其他对象而导致表被 删除或表定义被修改)

DML:SELECT、UPDATE、 DELETE、MERGE INTO、COPY FROM、COPY TO、VACUUM、 ANALYZE、 GRANT、REVOKE、CREATE INDEX、COMMENT ON TABLE、DBCC CHECKCATALOG、CREATE TABLE…INHERITS、 CREATE VIEW、ALTER INDEX RENAME TO、ALTER

ALTER TABLE、DROP TABLE、TRUNCATE TABLE、VACUUM FULL、 CREATE INDEX、 DBCC CHECKDB、 DBCC CHECKALLOCATE、 DBCC CHECKTABLESPACE、 CREATE TRIGGER、 REINDEX、ALTER TRIGGER、 APPLY_TABLE_POLICY()、 REMOVE_TABLE_POLCY()

DROP SCHEMA( 表所在的模式)、DROP OWNED(表对应的用户)、 REASSIGN OWNED (表对应的用户)

INDEX SET(storag e_parameter)、ALTER INDEX..UNUSABLE、ALTER SCHEMA、ALTER TABLESPACE、CREATE VIEW、ALTER INDEX、 ALTER SCHEMA、CREATE ROLE、ALTER ROLE、DROP ROLE、ALTER SEQUENCE、 CHECKPOINT、INSERT

CREATE RULE、ALTER INDEX SET TABLESPACE、DROP INDEX、CREATE INDEX、CLUSTER、LOCK

8.7. 支持的导出方式:

KingbaseES支持将数据库的数据导出到一个CSV文件格式的文件中。其功能与COPY TO导出数据库数据到一个 CSV 格式文件相同。

8.8. 性能调优:

使用sys_bulkload时,如对性能需求较高,可通过修改服务器配置(即修改kingbase.conf),来改变服务器的资源调度,以提高 sys_bulkload性能。但此类配置参数的修改会对服务器的相关资源调度产生影响,因此建议用户使用完成后还原成修改之前的配置。除了服务器参数,部分sys_bulkload的配置参数也会影响到传输速率。

8.8.1. 服务器参数配置:

下表给出了会对sys_bulkload性能产生影响的服务器参数,以及它的默认值和建议修改值。在实际应用过程中,可以依据服务器的硬件环境适当调整各参数的值。

服务器配置参数

默认值

建议值

shared_buffers

128M

2GB

work_mem

4M

100MB

maintenance_work_mem

64M

1GB

autovacuum

on

off

fsync

on

off

full_page_writes

on

off

checkpoint_timeout

5min

1d

wal_buffers

-1

1GB

max_wal_size

1GB

150GB

track_activities

on

off

8.8.2. sys_bulkload参数配置:

LIMIT

在导入CSV文件并且已知文件行数的情况下,设置LIMIT参数为导入文件的行数可提升导入速度。

REINDEX

若导入数据不需要建立索引,则将REINDEX参数设置为NO(默认值),可提升导入速度。

PROCESSOR_COUNT

使用BUFFERED方式导入,可以根据当前物理环境合理配置PROCESSOR_COUNT参数优化导入速度。

8.9. 示例:

创建导入数据表

create table test(id int primary key, info text, crt_time timestamp);

数据文件示例:将下列数据以 test.csv 为文件名保存到KingbaseES服务器所在目录

1,29b35ff06c949e7e442c929e1df86396,2017-10-08 10:52:47.746062
2,06fde814525395de5ab85f6d92b04e87,2017-10-08 10:52:47.746573
3,c93f02e8677c9cd7c906c6ad5dbd450e,2017-10-08 10:52:47.746627
4,6541700070ae3d051f965fcef43baf45,2017-10-08 10:52:47.746835
5,3d7e7246016acaa842526b6614d0edf5,2017-10-08 10:52:47.746869
6,1d1ae5a03ef0bad3bc14cd5449ba0985,2017-10-08 10:52:47.746894
7,7745c57c54b97656bec80a502ec13ec7,2017-10-08 10:52:47.746918
8,3c377131f6ef82c3284dc77a3b4ffdf7,2017-10-08 10:52:47.746942
9,5ef98d40aeeadf65eb1f0d7fd86ed585,2017-10-08 10:52:47.746968
10,312c0a0188da9e34fe45aa19d0d07427,2017-10-08 10:52:47.746993

8.9.1. 导入数据:

8.9.1.1. 以 BUFFERED 方式导入 TEXT 文件:

配置文件示例(以test.ctl为名保存到服务器所在目录,也可自行指定其他目录。)

TABLE = test
INPUT = /home/kingbase/test.csv
TYPE = CSV
SKIP = 2
LIMIT = 5
WRITER = BUFFERED
PROCESSOR_COUNT = 3

使用配置文件导入命令示例

./sys_bulkload -h localhost -d TEST /home/kingbase/test.ctl -U SYSTEM -W 123

使用配置文件导入结果

导入成功提示信息:
  NOTICE: BULK LOAD START
  NOTICE: BULK LOAD START
  NOTICE: BULK LOAD START
  NOTICE: BULK LOAD END
          2 Rows skipped.
          1 Rows successfully loaded.
          0 Rows not loaded due to parse errors.
          0 Rows not loaded due to duplicate errors.
          0 Rows replaced with new rows.
          log path: /home/test/test.log
          parse error path: /home/test/test.bad
          duplicate error path: /home/test/test.dupbad
          ctrl file path: /home/test/test.ctl
          data file path: /home/test/test.csv
          Run began on 2021-03-27 22:53:26.933617+08
          Run ended on 2021-03-27 22:53:26.934448+08
  NOTICE: BULK LOAD END
          4 Rows skipped.
          3 Rows successfully loaded.
          0 Rows not loaded due to parse errors.
          0 Rows not loaded due to duplicate errors.
          0 Rows replaced with new rows.
          log path: /home/test/test.log
          parse error path: /home/test/test.bad
          duplicate error path: /home/test/test.dupbad
          ctrl file path: /home/test/test.ctl
          data file path: /home/test/test.csv
          Run began on 2021-03-27 22:53:26.933694+08
          Run ended on 2021-03-27 22:53:26.934543+08
  NOTICE: BULK LOAD END
          3 Rows skipped.
          2 Rows successfully loaded.
          0 Rows not loaded due to parse errors.
          0 Rows not loaded due to duplicate errors.
          0 Rows replaced with new rows.
          log path: /home/test/test.log
          parse error path: /home/test/test.bad
          duplicate error path: /home/test/test.dupbad
          ctrl file path: /home/test/test.ctl
          data file path: /home/test/test.csv
          Run began on 2021-03-27 22:53:26.933770+08
          Run ended on 2021-03-27 22:53:26.934522+08

  导入结果查询(配置指定跳过前2行,限制导入条数5条):
    test=# select * from test;
     id |               info               |          crt_time
    ----+----------------------------------+----------------------------
      3 | c93f02e8677c9cd7c906c6ad5dbd450e | 2017-10-08 10:52:47.746627
      4 | 6541700070ae3d051f965fcef43baf45 | 2017-10-08 10:52:47.746835
      5 | 3d7e7246016acaa842526b6614d0edf5 | 2017-10-08 10:52:47.746869
      6 | 1d1ae5a03ef0bad3bc14cd5449ba0985 | 2017-10-08 10:52:47.746894
      7 | 7745c57c54b97656bec80a502ec13ec7 | 2017-10-08 10:52:47.746918
    (5 行记录)

8.9.1.2. 导入二进制文件:

利用 COPY TO 将数据库表中的数据导入到一个二进制文件中作为测试数据。

导入二进制文件数据命令示例

./sys_bulkload -i /home/kingbase/test.bin -O test -o "TYPE=BINARY" -o "WRITER=BUFFERED" -h localhost -d TEST -U SYSTEM -W 123

二进制文件导入结果

导入成功提示信息:
  NOTICE: BULK LOAD START
  NOTICE: BULK LOAD END
          0 Rows skipped.
          10 Rows successfully loaded.
          0 Rows not loaded due to parse errors.
          0 Rows not loaded due to duplicate errors.
          0 Rows replaced with new rows.
          log path: /home/test/test.log
          parse error path: /home/test/test.bad
          duplicate error path: /home/test/test.dupbad
          ctrl file path:
          data file path: /home/test/test.csv
          Run began on 2021-03-27 22:53:26.690476+08
          Run ended on 2021-03-27 22:53:27.496344+08

导入结果查询:
  test=# select * from test;
  ID |               INFO               |          CRT_TIME
  ----+----------------------------------+----------------------------
   1 | 29b35ff06c949e7e442c929e1df86396 | 2017-10-08 10:52:47.746062
   2 | 06fde814525395de5ab85f6d92b04e87 | 2017-10-08 10:52:47.746573
   3 | c93f02e8677c9cd7c906c6ad5dbd450e | 2017-10-08 10:52:47.746627
   4 | 6541700070ae3d051f965fcef43baf45 | 2017-10-08 10:52:47.746835
   5 | 3d7e7246016acaa842526b6614d0edf5 | 2017-10-08 10:52:47.746869
   6 | 1d1ae5a03ef0bad3bc14cd5449ba0985 | 2017-10-08 10:52:47.746894
   7 | 7745c57c54b97656bec80a502ec13ec7 | 2017-10-08 10:52:47.746918
   8 | 3c377131f6ef82c3284dc77a3b4ffdf7 | 2017-10-08 10:52:47.746942
   9 | 5ef98d40aeeadf65eb1f0d7fd86ed585 | 2017-10-08 10:52:47.746968
  10 | 312c0a0188da9e34fe45aa19d0d07427 | 2017-10-08 10:52:47.746993
  (10 行记录)

8.9.2. 导出数据:

将 text.csv 文件导入表 test 中作为测试数据。

导出数据命令示例

./sys_bulkload -d TEST -i TEST -O test_out.csv -o "TYPE=DB" -o "WRITER=CSV_FILE" -o "DELIMITER=|" -h localhost -U SYSTEM -W 123

导出数据结果

导出成功提示信息:
  NOTICE: BULK LOAD START
  NOTICE: BULK LOAD END
          0 Rows skipped.
          10 Rows successfully loaded.
          0 Rows not loaded due to parse errors.
          0 Rows not loaded due to duplicate errors.
          0 Rows replaced with new rows.
          log path: /home/test/test.log
          parse error path: test.bad
          duplicate error path: test.dupbad
          ctrl file path:
          data file path: test
          Run began on 2021-03-27 22:53:26.690476+08
          Run ended on 2021-03-27 22:53:27.496344+08

导出结果查询:
  cat test_out.csv
  1|29b35ff06c949e7e442c929e1df86396|2017-10-08 10:52:47.746062
  2|06fde814525395de5ab85f6d92b04e87|2017-10-08 10:52:47.746573
  3|c93f02e8677c9cd7c906c6ad5dbd450e|2017-10-08 10:52:47.746627
  4|6541700070ae3d051f965fcef43baf45|2017-10-08 10:52:47.746835
  5|3d7e7246016acaa842526b6614d0edf5|2017-10-08 10:52:47.746869
  6|1d1ae5a03ef0bad3bc14cd5449ba0985|2017-10-08 10:52:47.746894
  7|7745c57c54b97656bec80a502ec13ec7|2017-10-08 10:52:47.746918
  8|3c377131f6ef82c3284dc77a3b4ffdf7|2017-10-08 10:52:47.746942
  9|5ef98d40aeeadf65eb1f0d7fd86ed585|2017-10-08 10:52:47.746968
  10|312c0a0188da9e34fe45aa19d0d07427|2017-10-08 10:52:47.746993

8.10. 备注:

8.11. 参考:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值