我有一个包含作者数组的列.如何使用~*运算符检查其值是否与给定的正则表达式匹配?
该~*操作需要一个要检查的字符串左侧和正则表达式匹配右侧.文件说ANY操作员显然必须在右侧
`
SELECT '^p' ~* ANY(authors) FROM book;
Run Code Online (Sandbox Code Playgroud)
`
因为PostgreSQL尝试将字符串^p与数组中包含的表达式进行匹配,所以不起作用.
任何的想法?
将一个列表转换为单维数组很容易;
my_array integer[];
my_array := ARRAY(SELECT * FROM single_column_table);
Run Code Online (Sandbox Code Playgroud)
但在我的情况下,我需要将具有多个列的表转换为自定义类型对象的数组;
所以我有自定义类型
TYPE dbfile AS
(fileid integer,
deleted boolean,
name text,
parentid integer,
...
ALTER TYPE dbfile
Run Code Online (Sandbox Code Playgroud)
和数组声明为
my_files dbfile[];
-- how to cast table to array of custom types???
my_files := SELECT * FROM get_files(); -- get_files return SETOF dbfile.
Run Code Online (Sandbox Code Playgroud)
如何将表转换为自定义类型数组?
ARRAY()不起作用,因为它需要单列.
我正在尝试在 Rust 中实现一个责任链:
use std::error::Error;
struct Query {
query: String,
}
struct Response {
response: u64,
}
trait Responsability {
fn take(&self, iterator: std::slice::Iter<Box<dyn Responsability>>, query: Query) -> Result<Response, Box<dyn Error>>;
}
struct ResponsabilityChain<T: Responsability> {
responsabilities: Vec<Box<T>>,
}
impl<T: Responsability> ResponsabilityChain<T>
where
T: Responsability,
{
pub fn new(responsabilities: Vec<T>) -> Self {
let responsabilities = responsabilities.into_iter()
.map(|elt| Box::new(elt))
.collect();
Self { responsabilities }
}
pub fn launch(&self, query: Query) -> Result<Response, Box<dyn Error>> {
let iterator = self.responsabilities.iter(); …Run Code Online (Sandbox Code Playgroud) 我在不同地区有两个桶(假设 A 和 B)。我在存储桶 A 中有带有元数据 (x-amz-meta-mymeta) 的档案。我确实使用 CLI 执行复制命令:
aws s3 cp s3://A/${file}.tar.gz s3://B/
Run Code Online (Sandbox Code Playgroud)
根据文件的不同,是否保留元数据。文件pikachu复制后具有相同的元数据,但pika-chu目标存储桶B中的文件不具有元数据。
我已阅读文档,但除了此 SO 答案中公开的信息之外,找不到任何其他信息。
即使目标文件已经存在或不存在,元数据也会丢失。
任何提示?
编辑:即使复制命令是,元数据也会丢失
aws s3 cp s3://A/${file}.tar.gz s3://B/${file}
Run Code Online (Sandbox Code Playgroud)
编辑:有关信息,文件的大小不同,pikachu几 Mb 大而pika-chu更像是 50Mb。
编辑:使用aws s3 cp没有多部分信息的文件上传。