首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

SSIS在每次执行我的包时创建一个csv文件

SQL Server Integration Services (SSIS) 是一个强大的ETL(提取、转换、加载)工具,用于在SQL Server数据库和其他数据源之间移动和转换数据。当你在每次执行SSIS包时创建一个新的CSV文件,这通常是因为你的包中有一个任务负责生成这个文件。

基础概念

  • ETL过程:数据从源系统提取,经过转换处理,然后加载到目标系统。
  • SSIS包:包含一系列任务的集合,这些任务按顺序执行以完成数据处理流程。
  • Flat File Destination:SSIS中的一个组件,用于将数据写入平面文件,如CSV文件。

相关优势

  • 自动化:可以定期或按需自动执行数据提取和转换过程。
  • 灵活性:支持多种数据源和目标,以及复杂的数据转换逻辑。
  • 性能:可以处理大量数据,并且可以通过并行执行和优化来提高效率。

类型

  • 数据流任务:处理数据提取、转换和加载的核心任务。
  • 控制流任务:管理数据流任务的执行顺序和其他逻辑。

应用场景

  • 数据仓库加载:定期从操作数据库中提取数据,转换后加载到数据仓库。
  • 报告准备:生成定制的报告文件,如CSV,供外部系统使用。
  • 数据迁移:在不同的数据库系统之间迁移数据。

遇到的问题及原因

如果你发现每次执行SSIS包时都会创建一个新的CSV文件,而不是追加到现有文件或更新它,可能是因为:

  • Flat File Destination配置:默认情况下,Flat File Destination可能会配置为每次都创建一个新的文件。
  • 文件路径或名称:如果文件路径或名称包含时间戳或其他动态元素,每次执行都会生成一个新文件。

解决方法

要解决这个问题,你可以:

  1. 配置Flat File Destination:在Flat File Destination编辑器中,设置“Overwrite destination file at runtime”选项为False,这样就不会覆盖现有文件。
  2. 使用脚本任务:编写一个脚本任务来检查文件是否存在,并根据需要追加数据或更新文件。
  3. 使用参数化文件路径:如果需要生成多个文件,可以使用参数来动态生成文件名,但确保逻辑能够处理追加而不是覆盖。

示例代码

以下是一个简单的SSIS包示例,展示如何配置Flat File Destination以避免覆盖现有CSV文件:

  1. 在控制流中添加一个数据流任务。
  2. 在数据流中,添加一个OLE DB源和一个Flat File Destination。
  3. 配置Flat File Destination:
    • 双击Flat File Destination以打开编辑器。
    • 在“Connection Manager”页签中,选择或创建一个新的Flat File连接管理器。
    • 在“Columns”页签中,映射源列到目标列。
    • 在“Error Output”页签中,配置错误处理(如果需要)。
    • 在“General”页签中,确保“Overwrite destination file at runtime”未选中。

通过这样的配置,SSIS包将在每次执行时检查CSV文件是否存在,并将新数据追加到现有文件中,而不是创建一个新文件。

希望这些信息能帮助你理解SSIS包创建CSV文件的基础概念和相关问题解决方法。如果你有更具体的问题或需要进一步的帮助,请提供详细信息。

相关搜索:如何从本地执行SSIS包,但文件如(.csv,.xls...)在虚拟机上我在python中创建CSV文件时遇到问题我希望每次执行迁移命令时,都能在软件包文件夹中自动创建app.db每次在python中创建一个新的日志文件如何让我的程序在每次重新打开时创建一个新的输出文件名?如何让一个Button在每次点击时执行不同的“类”在Python中下载CSV -激活链接时创建的文件Chrome在每次重启时删除我解压的扩展文件夹无法从build文件夹读取csv文件,该文件是在我运行post请求时创建的DJango用户配置文件-每次我修改用户的配置文件时,都会创建一个新的配置文件如何创建一个SSIS包,用于循环访问名称中包含特定关键字的excel文件?Oracledb (NodeJS)在我每次创建一个新的池时都在工作。需要它才能使用已创建的池Angular 2:我在点击create notes按钮时创建便笺board.So,每次我都想添加一个便笺每次我想要构建一个新的c/c++项目时,我需要在vscode中创建一个tasks.json文件吗?每次我向web发送请求时,.net核心会创建一个新的会话吗?创建一个CSV文件,其中R的内容在指定的列中为什么在调试模式下运行父程序包时,子SSIS程序包的.dtsx文件会在BIDS中打开?当我只有来自make output的可执行文件时,如何创建{ApplicationName}.app包?每次在C++中的工具上建立连接时都会创建新的日志文件为什么VS代码每次创建文件时都会打开一个无标题的文件?
相关搜索:
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

「数据ETL」从数据民工到数据白领蜕变之旅(六)-将Python的能力嫁接到SSIS中

从实例数据.xlsx中,经过python脚本的运行,生成一个res.csv的文件。...在SSIS上使用python脚本 在控制流任务中,有【执行进程任务】,拉一个任务到右侧,并双击此任务进行详细配置。...否则最好用CMD来运行所需的程序,再加上/C开关关闭它,让SSIS任务流可以流到下一个任务。 创建好任务后,可以单独执行一个任务,测试最终效果。...此处给大家演示下控制流任务,可以将我们日常许多编程代码的任务,转换为控件拖拉的方式,例设上面py脚本未做防错处理,当已经有res.csv文件存在时,再生成res.csv会报错。...此处使用SSIS的【文件系统任务】来完成文件先删除操作。 接下来,我们回到常规任务,将新生成的res.csv文件进行数据抽取并加载到数据库中。

3.1K20

和我从头学SQL Server Integration Services

可以在以下存储类型之间导入和导出包: 文件系统文件夹中的任何地方 SSIS包存储中的文件夹。两个默认文件夹被命名为文件系统和MSDB。 SQL Server msdb数据库。...PackageConfiguration Wizard:程序包配置向导会指导您执行创建配置的步骤,以便在运行时更新程序包和程序包对象的属性值。...当你添加一个新的配置或者在Package Configurations Organizer对话框中修改一个现有的配置时,这个向导就会运行。...导入数据 导入数据的操作和导出数据大同小异,下面的截图,显示的是将一个文本文件导入到数据库中,生成一张新表,在这个示例中,是立即执行,没有生成ssis包 使用import data using the...编辑一个dts包 在data tools中编辑的ssis项目,生成的工程文件为dtsx结尾的文件,我们可以通过右键再次在data tools中的visual studio将其打开: ? ?

3.3K50
  • 使用SQL Server维护计划实现数据库定时自动备份

    “维护计划”是在SSMS的对象资源管理中“管理”节点下面。使用维护计划可以通过可视化的操作,只点点鼠标就可以创建数据库维护的SSIS包,然后仍然是通过SQL Server作业的方式来运行。...假设我们现在有一个生产系统的数据库需要进行备份,由于数据库中的数据很多,数据文件很大,如果每次都进行完整备份那么硬盘占用了很大空间,而且备份时间很长,维护起来也很麻烦。...”,如图: (3)单击“下一步”按钮,选择维护任务,这里就是可以在维护计划中执行的任务,如果你想执行的任务在这里没有,那就还是不用维护计划来做,自己写SSIS包或者SQL语句吧。...另外如果用过SSIS的人应该知道,一个任务在完成时是绿色箭头,如果是失败时是红色箭头,我们这里也可以设置,如果上一步骤失败,那么将执行什么操作,双击绿色箭头,在弹出的对话框中选择约束选项中的值为“失败”...如图: 在维护计划中也可以设置很复杂的逻辑运算和执行流程,就和SSIS设计一样的,毕竟本质上他们都是在设计SSIS包。

    2.7K10

    「Sqlserver」数据分析师有理由爱Sqlserver之七-最刚需的数据导入导出功能-导入篇

    作为数据分析师的角色,数据库的作用是帮助存储数据和需要时可以导出所需数据的用途,这个用途在数据量一大时,不采用数据库方案是没有办法做到一个完美效果的,所以就算不深入了解数据库其他功能,单单数据导入导出功能...字段的匹配映射信息确认 到此步提示保存包之类的操作,不理会即可,是为了可复用准备而已,但笔者也没找到相应的复用方式,真正要复用,更科学的是用SSIS来做一个完整的包,日后有机会再给大家分享。...目标表已有数据 链接服务器方式导入 上述方式导入的数据,对于一次性导入,不会再修改更新,是比较合宜的,若想长期引用一份Excel文件或其他csv文件的数据,当源文件更新了,在Sqlserver上可以同步更新到位...若没有权限创建链接服务器,也可使用其他OPENDATASOURCE、OPENROWSET等函数来创建,可能还是会有权限问题,文件要在Sqlserver安装的机器上,如果是共享文件夹路径的方式,方案又复杂许多...SSIS包的方式来实现,在SSIS上进行操作,更加灵活、强大,无论是数据源、目标数据存放的选择面都大很多,几乎可以将数据从任意源位置移动存放到任意目标位置。

    2.8K30

    警务数据仓库的实现

    (1)创建集成服务项目   每一个集成服务项目至少有一个 SSIS 包,所以,当 HuangDC_ETL 成功创建后,它有一个默认的 SSIS 包名称 Package.dtsx。...DimPolice 二、创建集成服务项目   在 MVS【起始页】窗口【文件】菜单中依次选择【新建】-【项目】菜单命令,弹出如图所示的【新建项目】窗口。...(2)多个控件组成的一个执行顺序就构成一个数据流任务,多个数据流任务按照执行顺序连接起来称为一个控制流。...,包括周期和时间,使代理能够在指定时间内执行该包。...(一)将包另存到SSIS服务器 1、进入 SSIS 包文件所在的文件夹 2、打开 SSIS 包的设计窗口 3、指定 SSIS 包另存的服务器 4、为 SSIS 包副本命名 5、配置包保护级别 6、将包另存到服务器

    6400

    一般数据库增量数据处理和数据仓库增量数据处理的几种策略

    第二类 - 有修改时间特征的数据表 这类表中的数据一般属于可以修改带有维护性质的数据,比如像会员信息表,创建会员的时候会生成一条记录,会在 CreateDate 标记一下,并且在 UpdateDate...我曾经碰到过一个文件表,由于部分数据的敏感性不能直接访问源数据库,因此是由客户从源数据库将数据抽取出来保存到一个文本文件中。...很简单的概念 - 即每次加载数据源中的数据时,基于主键或者唯一列到目标表中查询是否存在,如果不存在就插入。如果存在就比较关键列数据是否相等,不相等就修改。...还有一个非常重要的问题就是:如何处理在增量加载过程中失败的情况?...由于考虑到效率问题,不想每次都重新加载,因此可以考虑采用以下两种方式: 第一种方式 - SSIS Package 过程处理日志和错误日志模式 在每次 SSIS Package 执行的时候,写入一条记录到

    3.2K30

    如何将生产环境的字段类型从INT修改为BIGINT

    这是一个订单输入表,由于客户的活动,需要24小时的插入。一旦强行修改字段必然导致停机。 本文描述了我如何计划和执行从INT到BIGINT数据类型的更改。...当创建SSIS包时,请确保单击Enable Identity Insert(参见下面)。您将在选择源表和视图的Edit Mappings选项卡下找到这个选项。在我的场景中有一个身份列,所以这是需要的。...例如,如果最后一个导入在ID 6000处停止,那么我将使用> 6000创建下一个SSIS包。增量插入。我每天都这样做,以保持数据传输时间的减少。下面提供了用于Person表的SSIS包中使用的查询。...在还原的数据库中,用BIGINT代替INT创建副本表。 创建SSIS包,并启IDENTITY INSERT ,传输数据。 在复制表上创建所有索引和约束。...使用SSIS包定期更新PersonNew表,以将数据从可用性组中的报告实例转移 在计划的维护窗口中,多做一个SSIS传输,然后创建触发器以使表为只读。还关闭了访问此表的应用程序。

    5.1K80

    「数据ETL」从数据民工到数据白领蜕变之旅(四)-有了PowerQuery还需要SSIS吗?

    控制流中的数据流任务,可以再嵌套一个循环结构的容器,就变成批量执行某个数据流任务单元了,例如抽取某个文件夹下的所有Excel文件数据到数据库中,使用循环容器,就可以将任务分解成循环执行【Excel文件抽取数据到数据库...选择好Excel文件的路径信息即可完成连接信息的创建。...同样地我们模拟了一下【控制流】的任务清单,给大家再次感受下两者的差异(实际情况更好的处理方式是每个数据流的任务,单独建一个包,而不是一个包执行多个数据流任务,后续再分享细节)。...最后一步大功告成,我们要享受我们的开发成果,可以执行此包或此数据流任务(数据流任务可以单独执行,方便调度,包的执行就是包有控制流任务都一起生效,单个任务流组件执行,仅对此组件的任务生效)。...执行完好,我们可以切换不同的选项卡看一下不同的结果,因此次只执行了一个数据流,比较简单,复杂的【任务流】可以在进度选项卡中看到更丰富的执行过程日志。

    3.6K20

    「数据ETL」从数据民工到数据白领蜕变之旅(七)-将Excel(PowerQuery+VBA)的能力嫁接到SSIS中

    所以,若可以在标准的SSIS流程中引入PowerQuery的轻量化数据处理功能,将原有复杂的数据结构,先进行清洗整合后,变为一个干净的数据源供SSIS调用上传至数据库中,这时整个方案的可行性和性价比都非常可观...再进行数据加载过程,在模板文件中实现仅对当次循环文件的数据处理加工,并将其保存后,供下游的SSIS数据流任务调用此模板文件,实现模板文件的内容上传到数据库中。...每次循环,模板文件使用PowerQuery将不同数据加载进来并保存,实现所有的循环遍历文件的数据上传。...具体实现 整个流程如下所示,在测试过程中同样发现,当一个Excel的进程多次被使用时,会存在报错现象,所以索性牺牲一点点性能,每次循环都将Excel的进程给清除,并在一开始时也清除所有Excel进程,保证模板文件和其他数据源没有被打开...最终效果 将SSIS包进行执行后,结果如下: 加载过后的文件已归档成功,加上时间戳信息。 数据库数据成功加载。 在源文件中,特意做的不同文件不同标识,证明文件已按预期上传成功。

    4.6K20

    如何将生产环境的字段类型从INT修改为BIGINT

    这是一个订单输入表,由于客户的活动,需要24小时的插入。一旦强行修改字段必然导致停机。 本文描述了我如何计划和执行从INT到BIGINT数据类型的更改。...当创建SSIS包时,请确保单击Enable Identity Insert(参见下面)。您将在选择源表和视图的Edit Mappings选项卡下找到这个选项。在我的场景中有一个身份列,所以这是需要的。...例如,如果最后一个导入在ID 6000处停止,那么我将使用> 6000创建下一个SSIS包。增量插入。我每天都这样做,以保持数据传输时间的减少。下面提供了用于Person表的SSIS包中使用的查询。...在还原的数据库中,用BIGINT代替INT创建副本表。 创建SSIS包,并启IDENTITY INSERT ,传输数据。 在复制表上创建所有索引和约束。...使用SSIS包定期更新PersonNew表,以将数据从可用性组中的报告实例转移 在计划的维护窗口中,多做一个SSIS传输,然后创建触发器以使表为只读。还关闭了访问此表的应用程序。

    3K10

    ssis 数据转换_SSIS数据类型:高级编辑器的更改与数据转换的转换

    例如,当将一个字符串与一个int比较时,在比较进行之前,该字符串会隐式转换为int: SELECT * FROM Table WHERE [StringColumn] = [NumericColumn...请注意,使用平面文件连接时,可以从平面文件连接管理器而不是源高级编辑器更改SSIS数据类型。...:仅在包执行的特定时间才需要数据转换,这意味着您必须使用数据转换转换。...SQL Server目标 在SSIS中执行SQL任务:SqlStatementSource表达式与可变源类型 在SSIS中执行SQL任务:输出参数与结果集 具有多个表达式与多个转换的SSIS派生列 SSIS...数据类型:高级编辑器的更改与数据转换的转换 SSIS连接管理器:OLE DB与ODBC与ADO.NET SSIS平面文件与原始文件 SSIS Foreach循环与For循环容器 SSIS:执行T-SQL

    3.7K10

    介绍几种SSIS部署方式

    介绍     如果你已经开发完一个不错的SSIS包并且能够在你的本地完美的运行,每个任务都亮起绿色的通过标志。这时为了能够让这个包处理能够在指定时间运行,你需要将其发布到一个服务器上,并做好相关配置。...如果双击项目,一个向导将会协助你发布包到服务器。 按照以下步骤创建即可: 右击项目选择属性。在配置属性中,选择部署(Deployment Utility)。...将会创建清单中的内容到配置的文件夹里然后将所有的包复制到文件夹中。 在部署文件中, 默认(.\bin\Deployment),然后双击ISDM文件进入部署向导。...使用方式     最后介绍一下我最为喜欢的部署包到服务器的方式(使用BIDS Helper)。一个免费的插件。...现在你可以在解决方案浏览器中只是右击包然后选择“部署(Deploy)”来部署一个包了。 ? 图 3 最大的优势就是无论多少个文件都能一次性部署:只需要右键你的项目,然后选择部署。所有的包都会被部署。

    1.8K70

    SSIS技巧–优化数据流缓存

    问题 我们经常遇到一种情况,在SSMS中运行很慢的一个查询,当把查询转化成从源到目的数据库的SSIS数据流以后,需要花费几倍的时间!源和数据源都没有任何软硬件瓶颈,并且没有大量的格式转换。...测试场景 首先创建一个百万数据的源表。表结构是一个典型的name-value 键值对表,便于阐述我们的问题。其中value 列设为5000char。...这个是我们包的最快运行的时间理论上。那么包能不能运行的更快呢?SSIS中将邮件地址转换成邮箱维度表,该列在新表中只有50个字符的宽度,但是在源表中的该列却是5000个字符。...初始性能 为了限制外部影响,目标数据库的日志和数据文件足够大,不会影响整个事务。在开发环境下,整个包运行了大约40秒。这是要比直接查询慢的!写入操作是可以被优化的。...我们可以看一下三次不同的包的执行比较(默认配置–扩大缓存–扩大缓存并减小列宽),分别在SSIS catalog 中运行20次在,曲线图如下: 不用多说大家都知道这三种性能如何了。

    2.2K10

    SSIS技巧--优化数据流缓存

    问题     我们经常遇到一种情况,在SSMS中运行很慢的一个查询,当把查询转化成从源到目的数据库的SSIS数据流以后,需要花费几倍的时间!源和数据源都没有任何软硬件瓶颈,并且没有大量的格式转换。...测试场景     首先创建一个百万数据的源表。表结构是一个典型的name-value 键值对表,便于阐述我们的问题。其中value 列设为5000char。...这个是我们包的最快运行的时间理论上。那么包能不能运行的更快呢?SSIS中将邮件地址转换成邮箱维度表,该列在新表中只有50个字符的宽度,但是在源表中的该列却是5000个字符。...初始性能 为了限制外部影响,目标数据库的日志和数据文件足够大,不会影响整个事务。在开发环境下,整个包运行了大约40秒。这是要比直接查询慢的!写入操作是可以被优化的。...当包运行时数据流执行仅仅用了12秒! ?     我们可以看一下三次不同的包的执行比较(默认配置--扩大缓存--扩大缓存并减小列宽),分别在SSIS catalog 中运行20次在,曲线图如下: ?

    2.2K90

    ADF 第三篇:Integration runtime和 Linked Service

    Linked Service Integration runtime(IR) 是Azure 数据工厂在不同的网络环境中进行数据集成的组件,用于几个环境中: Data Flow:在托管的Azure计算环境中执行...SSIS package execution:在托管的 Azure 计算环境中本机执行 SQL Server 集成服务 (SSIS) 包 在数据工厂中,活动(Activity)定义要执行的动作,Linked...Activity,这使得ADF可以在满足安全性和合规性需求的同时,以最高效的方式在最接近目标数据存储或计算服务的区域中执行活动。...一,IR的类型 数据工厂提供了三种类型的IR,每种类型的IR 适用的网络环境如下表所示: image.png Azure IR的作用: 可以在Azure上执行Data Flow 在cloud 数据存储之间执行...Azure-SSIS IR: 用于执行SSIS packages,通过把Azure-SSIS IR加入到on-premises的网络中,数据工厂可以用于本地数据访问(on-premises data access

    1.5K20

    「集成架构」2020年最好的15个ETL工具(第一部)

    Skyvia包括一个ETL解决方案,用于各种数据集成场景,支持CSV文件、数据库(SQL Server, Oracle, PostgreSQL, MySQL)、云数据仓库(Amazon Redshift...在命令行模式下计划运行保存的作业。 首先,DBConvert studio创建到数据库的并发连接。然后创建一个单独的作业来跟踪迁移/复制过程。数据迁移或同步可以是单向的,也可以是双向的。...SSIS是微软为数据迁移开发的产品。当集成过程和数据转换在内存中处理时,数据集成要快得多。由于SSIS是微软的产品,所以它只支持Microsoft SQL Server。...主要特点: SSIS是一种商业许可的工具。 SSIS导入/导出向导帮助将数据从源移动到目标。 实现了对SQL Server数据库的自动化维护。 用于编辑SSIS包的拖放用户界面。...数据转换包括文本文件和其他SQL server实例。 SSIS有一个可用于编写编程代码的内建脚本环境。 它可以通过插件与salesforce.com和CRM集成。 调试功能和容易的错误处理流程。

    4.2K20

    系统库-SQL Server MSDB探究

    它还包含 SQL Server 代理的所有数据,包括作业、步骤、运算符、警报和执行历史记录。有时 MSDB 用于存储 SSIS 包,尽管它更常见地存储在实例上的 SSIS 目录数据库中。...它包含已执行备份的记录: 如果我们想要获取在实例上执行的备份的更详细信息,可以运行关于备份表的关联查询。...在 SSMS 中,我们使用维护计划向导创建一个新的维护计划: 我们选择一个备份数据库(完整)任务作为示例,并为两个数据库创建一个备份数据库任务: 创建好维护计划后,我们在msdb中查找相应的信息。...根据微软的说法,上述表将在 SQL Server 的未来版本中进行剔除。但是,可以在 SSIS 包相关表中找到有关维护计划的信息。...由于任何维护计划都会创建一个由 SQL Server 代理作业运行的 SSIS 包,如果我们查询 msdb 数据库中的sysssispackages和sysssispackagefolders 表,我们可以在那里找到有关我们的维护计划的信息

    1.6K20

    「数据ETL」从数据民工到数据白领蜕变之旅(五)-使用dotNET脚本实现SSIS无限扩展

    (Visual Studio Tools For Office)来说,一个是对OFFICE产品,一个是对程序,这里的程序就是SSIS。...实际演示 本篇只是导读类,并非要手把手教会大家,读者们仅需了解下SSIS的功能扩展边界,评估此工具能够给自己的数据方案做到何种程度,真正要学习时,建议仍然需要按步就班,从低到高地不断地进步。...在dotNET的自带的类库中,已经提供了非常强大的数据处理能力,特别是linq查询和我们很常用到的文件类操作,字符串处理特别是正则处理等,这里不展开,此篇给大家一个开放的思路,怎样从外界寻获更多的资源来武装自己的数据处理方案...使用脚本组件实现百度AI的调用 在本篇的SSIS包任务中,加上了一个脚本组件,从源Excel文件中抽取数据,经过脚本组件的转换,将内容发送到百度AI上,让其帮忙返回结果,最终转换后的结果写入到目标表中。...将程序员的广阔轮子世界接入SSIS中,并将各大厂商提供的SAAS消费级服务一并接入,恐怕只差我们的想像力而已,在SSIS的世界中,数据将如期地按我们想要的形式完成ETL的过程。

    2.3K10

    SQL Azure与SQL Server两者的对比介绍,看完你就懂了!

    当旧数据可以被移植至另外一个SQL Azure或本地的数据库内时,一个存档过程可被创建。因为上述的大小约束,建议对数据进行跨数据库分割。创建多个数据库能够充分利用多个节点的计算能力。...Azure 模式的最大价值在于其灵活性,在您的需求在最高点时可以按需创建任意多的数据库,在需求降低时删除数据库。最大难题在于编写应用程序能够跨数据库的拓展。...因为每一个用户创建的数据库可能并不在同一个物理服务器上。所以应用程序必须从多个数据库上取回数据,并在应用程序层面结合这些数据。...当旧数据可以被移植至另外一个SQL Azure或本地的数据库内时,一个存档过程可被创建。 因为上述的大小约束,建议对数据进行跨数据库分割。创建多个数据库能够充分利用多个节点的计算能力。...Azure 模式的最大价值在于其灵活性,在您的需求在最高点时可以按需创建任意多的数据库,在需求降低时删除数据库。最大难题在于编写应用程序能够跨数据库的拓展。

    3.2K20
    领券