字段名称“名称”无效。字段只能包含字母、数字和下划线,以字母或下划线开头,且最多 128 个字符

问题描述 投票:0回答:3

我尝试将 Firebase 实时数据库的备份从 Google Cloud Storage 导入 BigQuery 并收到以下错误:

字段名称“名称”无效。字段只能包含字母、数字和下划线,以字母或下划线开头,长度最多为 128 个字符。表:表测试

我尝试了第二个数据集,它返回以下错误

无效的字段名称“-Kq4_0dsRwKfOGGxGoQv”。字段只能包含字母、数字和下划线,以字母或下划线开头,长度最多为 128 个字符。表:表测试

这是第二个数据集

{"users":{"someUserID_abc":{"tests":{"-Kq4_0dsRwKfOGGxGoQv":"07/02/2019 19:44:22","-Kq4_vUQTQ3b6gqMkfRL":"07/02/2019 19:48:20","-Kq4a84n9WMu3NGiE4qW":"07/02/2019 19:53:36"}}}}

在我的初始(非常大)数据集中,有很多独特的 firebase 键,它们是 由 firebase 唯一生成的,并且通常以“-”开头(这似乎会在 BigQuery 中产生错误)。

我在创建表屏幕上的设置是:

Source
Create table from: Google Cloud Storage
Select file from GCS bucket: myproject-backups/2019-07-03T02:23:34Z_myproject_data.json.gz
File format: JSON (Newline delimited)

Destination
Project name: myproject
Dataset name: database
Table type: Native table
Table name: tabletest


Schema
Auto detect
(checked) Schema and input parameters
enter code here

在“创建表”屏幕上单击“创建表”按钮后,出现上述错误。

我尝试了不同的数据集和表名称,调整了表类型,查看了以下各项以寻找答案,但没有任何运气:

基于here,我猜测错误是“

Name
”中有一个空格(可能来自数据库?)并且我有很多由firebase生成的随机密钥(以前导“ -”)。这是一个非常大的数据集,因此我什至无法在程序冻结的情况下解压缩并打开初始 gzip 文件(甚至纯文本编辑器)。

编辑: 我创建了以下脚本来进行gunzip,“清理”.gzip 中所有密钥的数据,然后重新 gzip 文件:

# remove spaces, replace leading dashmarks (replace - with the word 'dashmark'), add an underscore before numbers
file=$"myfile.json.gz"
gunzip "$file"
sed -e "s/Name /Name/g" -e "s/-/dashmark/g" -e "s/{\"\([0-9]+\)/{\"_\1/g" -e "s/,\"\([0-9]+\)/,\"_\1/g" -e "s/,\"\"/\,\"_\"/g" -e "s/{\"\"/\{\"_\"/g" < "${file%.gz}" | gzip -c > "${file%.gz}.gz"

这似乎消除了“无效的字段名称...”错误,但引入了以下错误:

读取数据时出错,错误信息:无法解析JSON: 意外的标记;无法解析值;无法解析值;可以 不解析值;无法解析值;无法解析值;可以 不解析值;无法解析值;无法解析值;可以 不解析值;无法解析值;无法解析值;可以 不解析值;解析器在字符串结束之前终止

我确实对

sed
语句很陌生,所以也许我打字或写错了脚本,导致在我的尝试中创建了无效的 JSON 对象?

有谁知道如何从 .gzip 中的所有键中删除空格/特殊字符(或解决此错误的任何其他方法以将 Firebase RTD .gzip 导入 BigQuery)?

firebase-realtime-database google-bigquery google-cloud-storage
3个回答
1
投票

如果您准确复制了错误消息,则字符串“Name”中似乎有空格或其他空白字符。正如错误消息所告诉您的那样,该空白字符无效。您必须深入挖掘数据才能找出无效字符的确切来源。


0
投票

运行时也会打印这个错误

bq mk --table --schema xyz.json

并且 JSON 文件不存在于您运行命令的文件夹中。

mk 操作中的 BigQuery 错误:字段名称“xyz.json”无效。字段只能包含字母、数字和下划线,开头为 字母或下划线,长度最多 300 个字符。

找不到文件,但该错误让您认为您的架构 JSON 存在问题。


0
投票

在我的例子中,.gitignore 文件排除了 json 文件,因此 bq mk 命令无法找到该文件

© www.soinside.com 2019 - 2024. All rights reserved.