Неверное имя поля «Имя». Поля должны содержать только буквы, цифры и подчеркивания, начинаться с буквы или подчеркивания и быть не более 128 символов - PullRequest
1 голос
/ 04 июля 2019

Я пытаюсь импортировать резервную копию базы данных Firebase Real-Time из Google Cloud Storage в BigQuery и получаю следующую ошибку:

Неверное имя поля «Имя».Поля должны содержать только буквы, цифры и подчеркивания, начинаться с буквы или подчеркивания и содержать не более 128 символов.Таблица: tabletest

Я пробовал второй набор данных , который возвращает следующее error :

Invalid name name "-Kq4_0dsRwKfOGGxGoQv».Поля должны содержать только буквы, цифры и подчеркивания, начинаться с буквы или подчеркивания и содержать не более 128 символов.Таблица: tabletest

Это второй набор данных :

{"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

После того, как я нажал кнопку «Создать таблицу» на экране «Создать таблицу», я получил сообщение об ошибке выше.

Я пробовал разные наборы данных и имена таблиц, скорректировал таблицутипа, просматривал каждое из следующих ответов без удачи:

Исходя из здесь , я предполагаю, что ошибка в том, что "Name" содержит пробел (и можетe из базы данных?) и у меня есть много случайных ключей, сгенерированных firebase (которые начинаются с начального "-").Это очень большой набор данных, поэтому я даже не могу разархивировать и открыть исходный файл gzip без зависания программы (даже текстового редактора).

РЕДАКТИРОВАТЬ: Я создал следующий сценарий для gunzip, «очистить» данные для всех ключей в .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: Неожиданный токен;Не удалось разобрать значение;Не удалось разобрать значение;Не удалось разобрать значение;Не удалось разобрать значение;Не удалось разобрать значение;Не удалось разобрать значение;Не удалось разобрать значение;Не удалось разобрать значение;Не удалось разобрать значение;Не удалось разобрать значение;Не удалось разобрать значение;Не удалось разобрать значение;Синтаксический анализатор прерван до конца строкиспособ создания недопустимого объекта JSON в моей попытке?

Кто-нибудь знает, как удалить пробелы / специальные символы из всех ключей в .gzip (или каким-либо другим способом устранить эту ошибку?импортировать .gzip Firebase RTD в BigQuery)?

1 Ответ

0 голосов
/ 04 июля 2019

Если вы точно скопировали сообщение об ошибке, похоже, что в строке «Имя» есть пробел или какой-либо другой пробельный символ. Этот пробельный символ недействителен, как говорится в сообщении об ошибке. Вам придется копаться в ваших данных, чтобы выяснить, откуда именно этот недопустимый символ.

...