Descrição do Problema
Durante o processo de exportação de dados para o bucket GS usando o BigQuery, o data warehouse do Google Cloud, ocorreu um erro:
Especificação de uri inválida. O valor da opção 'uri' deve ser um URI curinga.
- As instruções do BigQuery executadas são as seguintes:
EXPORT DATA OPTIONS(
uri='gs://test_bucket/GENERATEDB_DATA.csv',
format='CSV',
overwrite=true,
header=true,
field_delimiter=',') AS
SELECT * FROM `test.test_table`
limit 50;
Após a execução, aparecerá uma mensagem de erro na janela de comando, conforme mostra a figura abaixo:
Análise de causa:
Como pode ser visto na mensagem de erro, a causa do erro é que o URI está incorreto. A solução final é modificar o caminho do URI. Então, por que está incorreto? Aqui está uma explicação.
Primeiro, a declaração oficial normal de dados de exportação no GCP é a seguinte:
EXPORT DATA OPTIONS(
uri='gs://bucket/folder/*.csv',
format='CSV',
overwrite=true,
header=true,
field_delimiter=';') AS
SELECT field1, field2 FROM mydataset.table1 ORDER BY field1 LIMIT 10
Observe que o valor do uri acima é um método de escrita fixo gs:// + bucket的名字 + 文件夹(可选) + 通配的csv文件名
. A sintaxe EXPORT DATA não suporta gravação direta de um único arquivo para exportação. Para instruções oficiais clique aqui .
solução:
Modifique a sintaxe EXPORT DATA e altere uri para uma expressão curinga. O código é o seguinte:
EXPORT DATA OPTIONS(
uri='gs://test_bucket/GENERATEDB_DATA_*.csv',
format='CSV',
overwrite=true,
header=true,
field_delimiter=',') AS
SELECT * FROM `test.test_table`
limit 50;
Após a execução final ser bem-sucedida novamente, o arquivo exportado pode ser visto no bucket GS:
Adicionado : o BigQuery oferece suporte a um único operador curinga (*) em cada URI. Os caracteres curinga podem aparecer em qualquer lugar do URI, mas não podem ser incluídos no nome do bucket. Use o operador curinga para instruir o BigQuery a criar vários arquivos de fragmentos com base no padrão fornecido. O operador curinga substitui um número (começando em 0) por 12 bits preenchidos à esquerda. Por exemplo, se um URI tiver um caractere curinga no final do nome do arquivo, quando os arquivos forem criados, o primeiro arquivo terá 000000000000 anexado ao final do nome, o segundo arquivo terá 000000000001 anexado ao nome, e assim por diante.
[ 本文作者 ] bluetata
[ 原文链接 ] https://bluetata.blog.csdn.net/article/details/135508108
[ 最后更新 ] 01/10/2024 18:16
[ 版权声明 ] 如果您在非 CSDN 网站内看到这一行,
说明网络爬虫可能在本人还没有完整发布的时候就抓走了我的文章,
可能导致内容不完整,请去上述的原文链接查看原文。