Q: 为什么 Ultipa Transporter 无法连接 Ultipa 服务器?服务器实例在 Ultipa Cloud 上
A: 如果服务器实例是通过 Ultipa Cloud 部署的,需要在 Ultipa Cloud 页面上该服务器实例的网络设置(Network Settings)中将客户端(运行 Ultipa Transporter 的机器)的 IP 添加至允许接入站点列表(InBound Allowed IPs)。
Q: 导入/导出时报错 rpc error: code = ResourceExhausted desc = Received/Sent message larger than max (31324123 vs. 4194304) 是什么意思?怎么解决?
A: 该报错是指在导入/导出某一个数据分批时,批的数据量 31324123 byte 超过了限值 4194304 byte,原因可能是导入/导出的属性过多、属性数据量过大(用 text 类型存储的超长文本)、或者批大小 batchSize 设置过大,导致批的数据量超过了服务器的 max_rpc_msgsize(默认 4M)或 Go SDK 的 MaxPacketSize(默认 40M)。
解决方案1:降低配置文件中的 batchSize
解决方案2:提高配置文件中的 MaxPacketSize
,和/或提高服务器配置 max_rpc_msgsize
(后者须重启服务器)。
Q: 导入时间类型的格式有什么要求?
A: 请按以下格式书写:
- [YY]YY-MM-DD HH:MM:SS
- [YY]YY-MM-DD HH:MM:SSZ
- [YY]YY-MM-DDTHH:MM:SSZ
- [YY]YY-MM-DDTHH:MM:SS[+/-]0x00
- [YY]YYMMDDHH:MM:SS[+/-]0x00
支持4位/2位的年份(2位年份 ≥70 的解析为 19xx,<70 的解析为 20xx),支持2位/1位的月和日,横杠(-)可用斜杠(/)代替,[+/-]0x00
根据实际情况写为 +0700
、-0300
等,Z表示 UTC 0 时区。
Q: 导出的时间类型是什么时区?
A: datetime 无时区概念,导出时无时区信息,timestamp 导出时转化为 timezone
设置的时区,未设置该参数则为本地时区。
Q: 导入的字段 _id
、_uuid
、_from
、_to
、_from_uuid
、_to_uuid
可以声明为 string、uint64 么?
A: 不可以。导入的字段代表系统属性时,需将其类型配置为相应的系统属性名。导入的字段名与系统属性重名但不代表系统属性的,要么配置为 _ignore(忽略不导入),要么通过 new_name
修改名称。
Q: 导入 CSV 时警告 bare " in non-quoted-field 或 extraneous or missing " in quoted-field 是什么意思?怎么解决?
A: 这两个警告均与字段中的英文双引号有关。
当 quotes
为 false 时,字段中的双引号被解析为包裹字段内容的边界(不作为字段内容,且必须出现在字段的开头和结尾),两个双引号才被解析为双引号字符(作为字段内容)。例如,导入的字段内容为 I like when Jack said "If you jump I jump".
时,quotes
为 false 则会报警,需要将字段内容清洗为 "I like when Jack said ""If you jump I jump""."
才能正确导入。
当 quotes
为 true 时,字段中的双引号被解析为双引号字符本身(作为字段内容),上面列举的字段的原始内容即可成功导入,无需在首尾添加双引号,也无需将原始字段内的双引号用两个双引号进行转义。
Q: 导入 CSV 时字段中含有英文双引号、英文逗号、换行符要怎么处理?
A: 以下为三种符号单独出现时的处理原则,如果这些符号同,则需选择其中保守的方案。
含有英文双引号时,见上一个问题。
含有英文逗号时,如果 separator
也为英文逗号,为了防止字段中的逗号被解析为分隔符,必须用双引号将字段内容包裹,此时 quotes
必须为 false;否则,无需专门处理。
含有换行符是,必须用双引号将字段内容包裹,并保证 quotes
为 false。
Q: CSV 文件中字段值为 null 时,为什么不能成功导入为 null 类型?
A: CSV 中字段中的 null 会被解析为值为 null 的字符串。只有空字段才会解析为 null 值,即两个相连的分隔符。