假设我有一个包含现有数据的表,其模式如下:
{ 'name' : 'Field1', 'type' : 'STRING' },
{ 'name' : 'Field2', 'type' : 'STRING' }
我们的数据是CSV:
^{pr2}$我们通过创建一个新作业来加载数据,直接从Google云存储(GCS)加载CSV。我们的数据文件现在有一个额外的列和不同的顺序,因此数据现在是结构化的:
Field1,Field3,Field2
Value1,Value3,Value2
...
有没有一种方法可以在加载作业中指定跳过第二列,只加载列1和列3(名为Field1和Field2)?在
我正在使用Python API,例如。,服务.工作().插入(作业体)
基本上我想这样做:
job_body = {
'projectId': projectId,
'configuration': {
'load': {
'sourceUris': [sourceCSV],
'schema': {
'fields': [
{
'name': 'Field1',
'type': 'STRING'
},
{ # this would be the skipped field
'name': None
'skip': True
},
{
'name': 'Field2',
'type': 'String'
},
]
},
'destinationTable': {
'projectId': projectId,
'datasetId': datasetId,
'tableId': targetTableId
},
}
}
}
谢谢!在
目前还不可能做到这一点,但这可能是一个有趣的特性请求。请随意将其添加到https://code.google.com/p/google-bigquery/issues/list。在
同时,我将执行两步导入:
菲利佩的建议应该行得通。另一种可能性是,如果您能够修改要加载到BigQuery中的CSV,则在加载作业上使用ignoreUnknownValues标志:
但是,使用此标志将需要重新排序CSV中的列或将数据格式化为JSON。在
相关问题 更多 >
编程相关推荐