在使用terraform创建粘贴表时,我收到以下错误
at 'table.storageDescriptor.columns.5.member.type' failed to satisfy constraint: Member must satisfy regular expression pattern: [u0020-uD7FFuE000-uFFFDuD800uDC00-uDBFFuDFFFt]*;
地形柱类型如下:
struct<
subscriber_id:string,
price_plan_id:string,
usage_rate_id:string,
entitlement_id:string,
charged_gl:string,
uncharged_gl:string,
audit_trail:array<
struct<
time:string,
outcome_details:array<
struct<balance_id:array<string>,
balance_delta:string,
event_type:string,
invoice_text:string>>>>>
为了便于阅读,我保留了缩进。当我将其更改为缩小版本,如以下所示,然后错误消失。
struct<subscriber_id:string,price_plan_id:string,usage_rate_id:string,entitlement_id:string,charged_gl:string,uncharged_gl:string,audit_trail:array<struct<time:string,outcome_details:array<struct<balance_id:array<string>,balance_delta:double,event_type:string,invoice_text:string>>>>>"
AWS文档还告诉了多个api的这种模式。以下是针对Glue表的列类型所提到的内容。
Type列中数据的数据类型。
类型:字符串
长度限制:最小长度为0。最大长度为131072。
图案:[\u0020-\uD7FF\uE000-\uFFFD\uD800\uDC00-\uDBFF\uDFFF\t]*
必需:无
我想强调一下这个模式,这个模式意味着什么。我尝试搜索模式中提到的unicode字符,但无法确定这里代表的字符。我熟悉regex,但从未遇到过这种模式。
匹配"大多数"Unicode字符;但它非常明确地省略了基本的ASCII控制字符,尤其是换行符(U+000A(,这就是缩进版本不起作用的原因。
[u0020-uD7FF]
的意思是"U+0020和U+D7FF之间的任何单个Unicode字符"。这包括所有可打印的ASCII范围(包括空格U+0020和AU+0041(、大多数语言中的大多数字符、许多数学符号等等;[u0020-uD7FFuE000-uFFFD]
是"U+0020和U+D7FF之间或U+E000和U+FFFD之间的任何字符",这是在开始分配U+10000以上的代码点之前定义的所有字符。U+D800到U+DFFF不存在(即使此正则表达式明确包含它们(,U+FFFE和U+FFFF也不存在。末尾的t
是一个ASCII选项卡U+0009。
此regexp允许一些字符,如非中断空格U+00A0和U+0080到U+009F范围内的其他非ASCII控制字符。它不允许使用新的字符,如从U+1F600开始的面部表情符号。
如果您有一个匹配ASCII字母(如[A-Za-z]*
(的正则表达式,则可以将其以Unicode代码点语法重写为[u0041-u005Au0061-u007A]*
。