我正在尝试将云Firestore数据导出到bigquery中以执行sql操作。
我们有2个集合:Cloud Firestore中的“用户和提要”。 我已经成功导出了提要集合,但是无法导出用户集合。 从存储导入数据到bigquery时出现错误
错误:意外的属性名称“联系人”。我们在集合用户中有联系人字段。 此联系人字段的类型为“地图”。
我也尝试了命令行。下面是导出bigquery的命令。
**bq --location=US load --source_format=DATASTORE_BACKUP myproject_Dataset.users gs://myproject-storage/2019-04-19T13:29:28_75338/all_namespaces/kind_users/all_namespaces_kind_users.export_metadata**
在这里我也遇到同样的错误:
“意外的属性名称”联系人”。
我想添加投影字段以仅导出指定的字段,如下所示
**bq --location=US load --projection_fields=[Coins,Referral,Profile] --source_format=DATASTORE_BACKUP myproject_Dataset.users gs://myproject-storage/2019-04-19T13:29:28_75338/all_namespaces/kind_users/all_namespaces_kind_users.export_metadata**
在这里我也得到了错误:
正在等待> bqjob_r73b7ddbc9398b737_0000016a4909dd27_1 ...(0s)当前状态:完成
加载操作中的BigQuery错误:处理作业'myproject:bqjob_r73b7ddbc9398b737_0000016a4909dd27_1'时出错:内部错误 发生,请求无法完成。错误:4557051
有人可以让我知道如何解决这些问题吗?
提前谢谢您。Image of firestore Db
答案 0 :(得分:0)
您的某些文档似乎有问题。根据Firestore数据的BigQuery导入的limitations,您必须有一个包含少于10,000个唯一字段名称的架构。在“联系人”架构中,您将联系人的姓名用作键,这种设计可能会产生大量的字段名。您需要检查其他文件是否正在发生这种情况。
作为解决方法,您可以从以下位置更改设计(在加载过程的某个阶段):
"Contacts" : {
"contact1" : "XXXXX",
"contact2" : "YYYYY",
}
收件人:
"Contacts" : [
{
"name" : "contact1",
"number" : "XXXXX"
},
{
"name" : "contact2",
"number" : "YYYYY"
},
]
此架构将大大减少field_name的数量,这将使其更易于从BigQuery中进行操作。