Google bigquery BigQuery只显示流缓冲区中的第一个值字母

Google bigquery BigQuery只显示流缓冲区中的第一个值字母,google-bigquery,python-bigquery,Google Bigquery,Python Bigquery,我正在使用Python客户端库将数据流式传输到BigQuery中。数据行在BQ流缓冲区中很好,但是当我运行查询查看它时,我只能看到插入的值的第一个字母 具体来说,我运行的Python代码片段如下: from google.cloud import bigquery client = bigquery.Client() dataset_id = 'mydataset' table_id = 'mytable' table_ref = client.dataset(dataset_id).table

我正在使用Python客户端库将数据流式传输到BigQuery中。数据行在BQ流缓冲区中很好,但是当我运行查询查看它时,我只能看到插入的值的第一个字母

具体来说,我运行的Python代码片段如下:

from google.cloud import bigquery
client = bigquery.Client()
dataset_id = 'mydataset'
table_id = 'mytable'
table_ref = client.dataset(dataset_id).table(table_id)
table = client.get_table(table_ref)
rows_to_insert = [(u'testString')]
client.insert_rows(table, rows_to_insert)
然后,当我运行
SELECT*FROM mytable
时,我得到的结果值只有't'而不是'testString'


我猜这与流式缓冲区有关,并且应该在以BQ原生格式重写后显示整个值。但如果有人能帮我澄清一下,那就太好了。

在BigQuery中传输数据时,每一行都是python元组类型。要在python中正确定义元组,需要再添加一个
。例如:

>>> type( ('a') )
<type 'str'>

>>> type( ('a',) )
<type 'tuple'>
>>类型(('a'))
>>>类型(('a',))
正如本文所述

按照现在的方式,它发送一个单个字符的数组,因此每个字符都将进入不同的列(以防有更多的列)


只需将
rows\u to\u insert=[(u'testString')]
替换为
rows\u to\u insert=[(u'testString',)]
即可正确存储字符串

这很奇怪,不应该发生。查询流缓冲区应返回任何列的完整值。你的模式正确吗?