Я пытаюсь импортировать резервную копию базы данных 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)?