网络
虚拟私有云 VPC
弹性公网IP EIP
弹性负载均衡 ELB
NAT网关 NAT
云专线 DC
虚拟专用网络 VPN
云连接 CC
VPC终端节点 VPCEP
企业路由器 ER
企业交换机 ESW
全球加速 GA
企业连接 EC
云原生应用网络 ANC
安全与合规
安全技术与应用
Web应用防火墙 WAF
企业主机安全 HSS
云防火墙 CFW
安全云脑 SecMaster
DDoS防护 AAD
数据加密服务 DEW
数据库安全服务 DBSS
云堡垒机 CBH
数据安全中心 DSC
云证书管理服务 CCM
威胁检测服务 MTD
态势感知 SA
认证测试中心 CTC
边缘安全 EdgeSec
应用中间件
微服务引擎 CSE
分布式消息服务Kafka版
分布式消息服务RabbitMQ版
分布式消息服务RocketMQ版
API网关 APIG
分布式缓存服务 DCS
多活高可用服务 MAS
事件网格 EG
管理与监管
统一身份认证服务 IAM
消息通知服务 SMN
云监控服务 CES
应用运维管理 AOM
应用性能管理 APM
云日志服务 LTS
云审计服务 CTS
标签管理服务 TMS
配置审计 Config
应用身份管理服务 OneAccess
资源访问管理 RAM
组织 Organizations
资源编排服务 RFS
优化顾问 OA
IAM 身份中心
云运维中心 COC
资源治理中心 RGC
解决方案
高性能计算 HPC
SAP
混合云灾备
开天工业工作台 MIW
Haydn解决方案工厂
数字化诊断治理专家服务
云生态
云商店
合作伙伴中心
华为云开发者学堂
华为云慧通差旅
开发与运维
软件开发生产线 CodeArts
需求管理 CodeArts Req
流水线 CodeArts Pipeline
代码检查 CodeArts Check
编译构建 CodeArts Build
部署 CodeArts Deploy
测试计划 CodeArts TestPlan
制品仓库 CodeArts Artifact
移动应用测试 MobileAPPTest
CodeArts IDE Online
开源镜像站 Mirrors
性能测试 CodeArts PerfTest
应用管理与运维平台 ServiceStage
云应用引擎 CAE
开源治理服务 CodeArts Governance
华为云Astro轻应用
CodeArts IDE
Astro工作流 AstroFlow
代码托管 CodeArts Repo
漏洞管理服务 CodeArts Inspector
联接 CodeArtsLink
软件建模 CodeArts Modeling
Astro企业应用 AstroPro
CodeArts盘古助手
华为云Astro大屏应用
计算
弹性云服务器 ECS
Flexus云服务
裸金属服务器 BMS
云手机服务器 CPH
专属主机 DeH
弹性伸缩 AS
镜像服务 IMS
函数工作流 FunctionGraph
云耀云服务器(旧版)
VR云渲游平台 CVR
Huawei Cloud EulerOS
云化数据中心 CloudDC
网络
虚拟私有云 VPC
弹性公网IP EIP
弹性负载均衡 ELB
NAT网关 NAT
云专线 DC
虚拟专用网络 VPN
云连接 CC
VPC终端节点 VPCEP
企业路由器 ER
企业交换机 ESW
全球加速 GA
企业连接 EC
云原生应用网络 ANC
CDN与智能边缘
内容分发网络 CDN
智能边缘云 IEC
智能边缘平台 IEF
CloudPond云服务
安全与合规
安全技术与应用
Web应用防火墙 WAF
企业主机安全 HSS
云防火墙 CFW
安全云脑 SecMaster
DDoS防护 AAD
数据加密服务 DEW
数据库安全服务 DBSS
云堡垒机 CBH
数据安全中心 DSC
云证书管理服务 CCM
威胁检测服务 MTD
态势感知 SA
认证测试中心 CTC
边缘安全 EdgeSec
大数据
MapReduce服务 MRS
数据湖探索 DLI
表格存储服务 CloudTable
可信智能计算服务 TICS
推荐系统 RES
云搜索服务 CSS
数据可视化 DLV
数据接入服务 DIS
数据仓库服务 GaussDB(DWS)
数据治理中心 DataArts Studio
湖仓构建 LakeFormation
智能数据洞察 DataArts Insight
应用中间件
微服务引擎 CSE
分布式消息服务Kafka版
分布式消息服务RabbitMQ版
分布式消息服务RocketMQ版
API网关 APIG
分布式缓存服务 DCS
多活高可用服务 MAS
事件网格 EG
开天aPaaS
应用平台 AppStage
开天企业工作台 MSSE
开天集成工作台 MSSI
API中心 API Hub
云消息服务 KooMessage
交换数据空间 EDS
云地图服务 KooMap
云手机服务 KooPhone
组织成员账号 OrgID
云空间服务 KooDrive
管理与监管
统一身份认证服务 IAM
消息通知服务 SMN
云监控服务 CES
应用运维管理 AOM
应用性能管理 APM
云日志服务 LTS
云审计服务 CTS
标签管理服务 TMS
配置审计 Config
应用身份管理服务 OneAccess
资源访问管理 RAM
组织 Organizations
资源编排服务 RFS
优化顾问 OA
IAM 身份中心
云运维中心 COC
资源治理中心 RGC
区块链
区块链服务 BCS
数字资产链 DAC
华为云区块链引擎服务 HBS
解决方案
高性能计算 HPC
SAP
混合云灾备
开天工业工作台 MIW
Haydn解决方案工厂
数字化诊断治理专家服务
价格
成本优化最佳实践
专属云商业逻辑
云生态
云商店
合作伙伴中心
华为云开发者学堂
华为云慧通差旅
其他
管理控制台
消息中心
产品价格详情
系统权限
客户关联华为云合作伙伴须知
公共问题
宽限期保留期
奖励推广计划
活动
云服务信任体系能力说明
开发与运维
软件开发生产线 CodeArts
需求管理 CodeArts Req
流水线 CodeArts Pipeline
代码检查 CodeArts Check
编译构建 CodeArts Build
部署 CodeArts Deploy
测试计划 CodeArts TestPlan
制品仓库 CodeArts Artifact
移动应用测试 MobileAPPTest
CodeArts IDE Online
开源镜像站 Mirrors
性能测试 CodeArts PerfTest
应用管理与运维平台 ServiceStage
云应用引擎 CAE
开源治理服务 CodeArts Governance
华为云Astro轻应用
CodeArts IDE
Astro工作流 AstroFlow
代码托管 CodeArts Repo
漏洞管理服务 CodeArts Inspector
联接 CodeArtsLink
软件建模 CodeArts Modeling
Astro企业应用 AstroPro
CodeArts盘古助手
华为云Astro大屏应用
存储
对象存储服务 OBS
云硬盘 EVS
云备份 CBR
高性能弹性文件服务 SFS Turbo
弹性文件服务 SFS
存储容灾服务 SDRS
云硬盘备份 VBS
云服务器备份 CSBS
数据快递服务 DES
云存储网关 CSG
专属分布式存储服务 DSS
数据工坊 DWR
地图数据 MapDS
键值存储服务 KVS
容器
云容器引擎 CCE
云容器实例 CCI
容器镜像服务 SWR
云原生服务中心 OSC
应用服务网格 ASM
华为云UCS
数据库
云数据库 RDS
数据复制服务 DRS
文档数据库服务 DDS
分布式数据库中间件 DDM
云数据库 GaussDB
云数据库 GeminiDB
数据管理服务 DAS
数据库和应用迁移 UGO
云数据库 TaurusDB
人工智能
AI开发平台ModelArts
华为HiLens
图引擎服务 GES
图像识别 Image
文字识别 OCR
自然语言处理 NLP
内容审核 Moderation
图像搜索 ImageSearch
医疗智能体 EIHealth
企业级AI应用开发专业套件 ModelArts Pro
人脸识别服务 FRS
对话机器人服务 CBS
语音交互服务 SIS
人证核身服务 IVS
视频智能分析服务 VIAS
城市智能体
自动驾驶云服务 Octopus
盘古大模型 PanguLargeModels
IoT物联网
设备接入 IoTDA
全球SIM联接 GSL
IoT数据分析 IoTA
路网数字化服务 DRIS
IoT边缘 IoTEdge
设备发放 IoTDP
企业应用
域名注册服务 Domains
云解析服务 DNS
企业门户 EWP
ICP备案
商标注册
华为云WeLink
华为云会议 Meeting
隐私保护通话 PrivateNumber
语音通话 VoiceCall
消息&短信 MSGSMS
云管理网络
SD-WAN 云服务
边缘数据中心管理 EDCM
云桌面 Workspace
应用与数据集成平台 ROMA Connect
ROMA资产中心 ROMA Exchange
API全生命周期管理 ROMA API
政企自服务管理 ESM
视频
实时音视频 SparkRTC
视频直播 Live
视频点播 VOD
媒体处理 MPC
视频接入服务 VIS
数字内容生产线 MetaStudio
迁移
主机迁移服务 SMS
对象存储迁移服务 OMS
云数据迁移 CDM
迁移中心 MGC
专属云
专属计算集群 DCC
开发者工具
SDK开发指南
API签名指南
DevStar
华为云命令行工具服务 KooCLI
Huawei Cloud Toolkit
CodeArts API
云化转型
云架构中心
云采用框架
用户服务
账号中心
费用中心
成本中心
资源中心
企业管理
工单管理
客户运营能力
国际站常见问题
支持计划
专业服务
合作伙伴支持计划
我的凭证
华为云公共事业服务云平台
工业软件
工业数字模型驱动引擎
硬件开发工具链平台云服务
工业数据转换引擎云服务

使用COPY命令导出导入数据

更新时间:2025-01-23 GMT+08:00
分享

COPY是cqlsh中的逻辑导出导入命令,包括COPY TOCOPY FROM两个命令。

COPY TO支持将数据从表中导出到csv、parquet、orc格式的文件中。
  • 导出文件格式为csv时,需要每行都写入目标文件中的一行,其中的字段由定界符分隔。
  • 如果未指定列名,则导出所有字段。
  • 如果需要跳过部分列,需要指定列列表。

COPY FROM支持将数据从csv文件文件导入到现有表中。

  • 源文件中的每一行都作为一行导入。
  • 数据集中的所有行必须包含相同数量的字段,并且在PRIMARY KEY字段中必须具有值,该过程将验证PRIMARY KEY并更新现有记录。
  • 如果HEADER为False并且没有指定列名,则以确定的顺序导入字段。指定列名后,将按该顺序导入字段,缺少和空字段设置为null。
  • 源文件不能具有比目标表更多的字段,但是可以具有更少的字段。
  • 仅使用COPY FROM导入数据时,数据集必须少于200万行。

使用须知

  • 建议您尽量选择在业务低峰期导出导入数据,避免在该过程中对业务造成影响。
  • 需要获取最新的二进制包,具体地址请参见下载二进制包

COPY语法

  • COPY TO命令

    COPY table_name [( column_list )] TO 'file_name' [, 'file2_name', ...] | STDOUT [WITH option = 'value' [ADN ...]]

  • COPY FROM命令

    COPY table_name [( column_list )] FROM 'file_name' [, 'file2_name', ...] | STDIN [WITH option = 'value' [ADN ...]]

说明:

COPY支持一个或多个以逗号分隔的文件名或python glob表达式的列表。

上述COPY命令中出现的一些常见语法符号可以参见表1的约定。

表1 符号约定

常用符号

说明

大写字母

表示文字关键字。

小写字母

表示变量,需要替换为用户自定义的真实值。

斜体

可选的。方括号( [] )围绕可选命令参数。请勿输入方括号。

( )

组。括号(( ))表示要选择的组。不要键入括号。

|

或。竖线( | )分隔其他元素。键入任何一个元素。请勿输入竖线。

...

可重复的。省略号(...)表示您可以根据需要多次重复语法元素。

'Literal string'

单引号( ' )必须包含CQL语句中的文字字符串。使用单引号将大写字母保留下来。

{ key : value }

地图集合map。大括号( { } )包含地图集合或键值对。用冒号分隔键和值。

<datatype1,datatype2>

有序列表set,列出,映射或元组。尖括号(< >)将数据类型包含在集合,列表,地图或元组中。用逗号分隔数据类型。

cql_statement;

结束CQL语句。分号( ; )终止所有CQL语句。

[--]

使用两个连字符(--)将命令行选项与命令参数分开 。当参数可能误认为命令行选项时,此语法很有用。

' <schema> ... </schema> '

仅搜索CQL:单引号( ' )包围整个XML模式声明。

@xml_entity='xml_entity_type'

仅搜索CQL:标识实体和文字值以覆盖模式和solrConfig文件中的XML元素。

COPY参数使用建议

表2 参数介绍

命令类型

参数

描述

默认值

使用建议

TO/FROM

DELIMITER

用于分隔字段的单个字符。

英文逗号,

-

TO/FROM

QUOTE

包含字段值的单个字符。

"

-

TO/FROM

ESCAPE

转义使用QUOTE字符的单个字符。

\

-

TO/FROM

HEADER

布尔值(true | false),指示第一行上的列名称。

True将字段名称与导入(FROM)上的列名匹配,并将列名称插入到导出(TO)数据的第一行中。

FALSE

-

TO/FROM

NULL

查询结果为空的字段的填充值,可自由设置。

空字符串()

-

TO/FROM

DATETIMEFORMAT

用于读取或写入CSV时间数据的时间格式。

时间戳使用strftime格式。如果未设置,则默认值将设置为cqlshrc文件中的time_format值。

默认格式:%Y-%m-%d %H:%M:%S%z。

%Y-%m-%d %H:%M:%S%z

-

TO/FROM

MAXATTEMPTS

发生错误时的最大重试次数。

5

-

TO/FROM

REPORTFREQUENCY

状态显示的频率(以秒为单位)。

0.25

-

TO/FROM

DECIMALSEP

decimal(大数)值的分隔字符。

英文句号.

-

TO/FROM

THOUSANDSSEP

千位数组的分隔符。

None

-

TO/FROM

BOOLSTYLE

布尔值指示True和False。该值不区分大小写,例如:yes,no和YES,NO相同。

True,False

-

TO/FROM

NUMPROCESSES

工作进程数。

16

该参数的默认值是计算机上的内核数量减一个,当前未设置上限值。

您可以通过dstat,dstat -lvrn 10观察CPU空闲时间,如果存在CPU空闲时间,请使用默认的工作进程数。您可以增加进程数,增加的同时也需要观察实例的CPU使用情况,建议不超过60%,如果执行机CPU有空闲,而实例CPU已经超过建议值,进一步提升性能则需要扩容。

TO/FROM

CONFIGFILE

指定一个cqlshrc配置文件以设置WITH选项。

说明:

命令行选项始终会覆盖cqlshrc文件。

无,需自行制定

-

TO/FROM

RATEFILE

将输出统计信息打印到此文件。

无,需自行制定

导出数据时建议加上该参数以提升统计效率。

TO/FROM

ORIGIN

需要导入导出的数据库是否为开源Cassandra。

  • 如果是开源Cassandra,则为True。
  • 如果是GeminiDB Cassandra,则为False。

False

-

FROM

CHUNKSIZE

块大小传递给工作进程。

5000

该参数是从Feeder进程(从文件读取数据)发送到worker进程的行数。根据数据集的平均行大小,增加此参数的值可能是有利的。

FROM

INGESTRATE

每秒的近似导入速率。

100000

INGESTRATE是feeder进程发送数据给worker进程的每秒速率(以行数为单位),通常,除非每秒速率太高,需要限制速率,否则无需更改此值。

FROM

MAXBATCHSIZE

导入批处理的最大大小。

20

该值的设置可以尽可能大,但不要超过上限。

  • MAXBATCHSIZE*单行size < batch_size_fail_threshold_in_kb。
  • 批大小太大可能会导致警告并最终被拒绝。
  • 如下两个参数在cassandra.yaml中进行设置:

    batch_size_warn_threshold_in_kb(当前值为5)

    batch_size_fail_threshold_in_kb(当前值为50)

FROM

MINBATCHSIZE

导入批处理的最小大小。

2

对于每一个chunk,worker进程至少会按照最小batchsize进行batch写入,根据块的大小,群集中的节点数以及每个节点的VNODES数,此值可能需要调整:chunksize越大,此值需要调大。

FROM

MAXROWS

最大行数。使用“ -1”意味无最大限制。

-1

-

FROM

SKIPROWS

要跳过的行数。

0

-

FROM

SKIPCOLS

以逗号分隔的要跳过的列名称列表。

无,需自行制定

-

FROM

MAXPARSEERRORS

最大全局解析错误数。使用“ -1”意味无最大限制。

-1

-

FROM

MAXINSERTERRORS

全局最大插入错误数。使用“ -1”意味无最大限制。

-1

-

FROM

ERRFILE

用于存储所有未导入的行的文件。

如果未设置任何值,则信息存储在import_ ks _ table .err中,其中ks是键空间,而table是表名。

import_ ks _ table .err

-

FROM

TTL

生存时间以秒为单位。默认情况下,数据不会过期。

3600

-

TO

ENCODING

输出字符串类型。

UTF-8

-

TO

PAGESIZE

用于获取结果的页面大小。

1000

取值为整数,表示获取结果的页面大小,默认为1000。

页面大小越大,pagetimeout应该越长。单行数据量比较大时需要调小,单行数据量比较小时可以适当增大该值。该值的最佳效果还取决于执行机批量本地写的能力,如果批量本地写能力很强(如使用华为云obsfs),可适当增大。

TO

PAGETIMEOUT

页面超时以获取结果。

10

取值为整数,表示获取每个页面的超时(以秒为单位),默认为10秒。

  • 对于较大的页面大小或较大的分区,建议增加该参数值。
  • 如果发现超时,则应考虑增加该参数值。
  • 如果服务器超时,则会自动启动一个指数退避策略,因此您可能会注意到延迟,但这是为了防止服务器进一步过载。驱动程序还会生成超时,在这种情况下,由于驱动程序不知道服务器稍后是否会丢弃请求或返回结果,因此可能会丢失或重复数据的可能性很小。增大该参数值对于防止驱动程序生成超时非常有帮助。

TO

BEGINTOKEN

用于导出数据的最小token。

无,需自行制定

取值为字符串,表示导出数据时要考虑的最小令牌。

具有较小令牌的记录将不会导出。

默认为空,表示没有最小令牌。

TO

ENDTOKEN

用于导出数据的最大token。

无,需自行制定

取值为字符串,表示导出数据时要考虑的最大令牌。

具有较大令牌的记录将不会导出。

默认为空,表示没有最大令牌。

TO

MAXREQUESTS

每个工作者可以并行处理的最大请求数。

6

该参数取值为整数,表示每个工作进程可以处理的最大运行中请求数。

导出数据时总的并行度=工作进程数*该参数值。

默认值为6。每个请求将导出整个令牌范围的数据。

TO

MAXOUTPUTSIZE

输出文件的最大大小,以行数为单位。

设置后,超过该值时,输出文件将拆分为多个段。使用“ -1”意味无最大限制。

-1

该参数取值为整数,表示以行数为单位的输出文件的最大大小。超过此值,输出文件将被拆分为多个段。它的默认值为-1,表示无限制的最大值,因此是唯一的输出文件。可以和MAXFILESIZE同时使用。

TO

MAXFILESIZE

输出文件的最大大小,以KB为单位。

设置后,超过该值时,输出文件将拆分为多个段。

无,需自行制定

该参数取值为整数,表示以字节为单位的输出文件的最大大小,文件最终大小近似于该值。超过此值,输出文件将被拆分为多个段。它的默认值为-1,表示无限制的最大值,因此是唯一的输出文件。可以和MAXOUTPUTSIZE同时使用。

TO

dataformats

输出文件格式,当前如果设置值只能选json。

无,需自行制定

-

TO

DATATYPE

文件格式可选parquet或者orc。

无,需自行制定

-

TO

RESULTFILE

导出的详细结果文件。

无,需自行制定

导出数据时建议加上该参数以提升统计效率。

TO

wherecondition

导出时指定的导出条件。

无,需自行制定

-

如何使用COPY命令导出、导入数据

下面将以具体的示例介绍从预置数据到导出数据、导入数据的完整过程。

  1. 预置数据

    1. 创建keyspace。
      CREATE KEYSPACE cycling WITH replication = {'class': 'SimpleStrategy', 'replication_factor': 3};
    2. 创建table。
      CREATE TABLE cycling.cyclist_name (
         id UUID PRIMARY KEY,
         lastname text,
         firstname text
      );
    3. 插入数据。
      INSERT INTO cycling.cyclist_name (id, lastname, firstname) VALUES (5b6962dd-3f90-4c93-8f61-eabfa4a803e2, 'VOS','Marianne');
      INSERT INTO cycling.cyclist_name (id, lastname, firstname) VALUES (e7cd5752-bc0d-4157-a80f-7523add8dbcd, 'VAN DER BREGGEN','Anna');
      INSERT INTO cycling.cyclist_name (id, lastname, firstname) VALUES (e7ae5cf3-d358-4d99-b900-85902fda9bb0, 'FRAME','Alex');
      INSERT INTO cycling.cyclist_name (id, lastname, firstname) VALUES (220844bf-4860-49d6-9a4b-6b5d3a79cbfb, 'TIRALONGO','Paolo');
      INSERT INTO cycling.cyclist_name (id, lastname, firstname) VALUES (6ab09bec-e68e-48d9-a5f8-97e6fb4c9b47, 'KRUIKSWIJK','Steven');
      INSERT INTO cycling.cyclist_name (id, lastname, firstname) VALUES (fb372533-eb95-4bb4-8685-6ef61e994caa, 'MATTHEWS', 'Michael');

  2. “cyclist_name”表中导出、导入数据。

    1. “cyclist_name”表中的“id”“lastname”列导出到CSV文件。
      COPY cycling.cyclist_name (id,lastname)  TO '../cyclist_lastname.csv' WITH HEADER = TRUE;
      图1 导出成功

      上述命令执行成功后,会在当前目录的上一层目录中创建“cyclist_lastname.csv”文件。如果该文件已经存在,则会将其覆盖。

    2. “cyclist_name”表中的“id”“first name”列导出到另一个CSV文件。
      COPY cycling.cyclist_name (id,firstname)  TO '../cyclist_firstname.csv' WITH HEADER = TRUE;
      图2 导出成功

      上述命令执行成功后,会在当前目录的上一层目录中创建“cyclist_firstname.csv”文件。如果该文件已经存在,则会将其覆盖。

    3. “cyclist_name”表中的数据删除。为了您的数据安全,暂不支持TRUNCATE命令。
      DELETE FROM cycling.cyclist_name WHERE id = 'fb372533-eb95-4bb4-8685-6ef61e994caa';
    4. 查看此时表中无数据。
      SELECT * FROM cycling.cyclist_name ;
      图3 查询数据
    5. 导入“cyclist_firstname.csv”文件。
      COPY cycling.cyclist_name (id,firstname) FROM '../cyclist_firstname.csv' WITH HEADER = TRUE;
      图4 导入成功
    6. 校验新导入的数据。
      SELECT * FROM cycling.cyclist_name;
      图5 导入成功
    7. 导入“cyclist_lastname.csv”文件。
      COPY cycling.cyclist_name (id,lastname) FROM '../cyclist_lastname.csv' WITH HEADER = TRUE;
      图6 导入数据
    8. 校验数据是否更新。
      SELECT * FROM cycling.cyclist_name;

      查询结果显示,

      图7 导入成功

文档反馈

文档反馈

意见反馈

0/500

标记内容

同时提交标记内容