我为google BigQuery创建jdbc连接
Class.forName("net.starschema.clouddb.jdbc.BQDriver");
conn = DriverManager.getConnection("jdbc:BQDriver:"projectID"?transformQuery=true&user="client ID"&password="client secret");然后我得到目录名如下
ResultSet m_resultSet = conn.getMetaData().getCatalogs();
while (m_resultSet.next())
{
System.out.println(m_resultSet.getString(4));
}但现在我正在尝试获取数据集的名称。它返回null。
我能得到公共数据的数据集名称吗?怎么做??
发布于 2015-07-16 07:31:55
您可以使用下面的代码获取项目、数据集和表的列表。
要获取公共数据,可以使用下面的代码
var SampleTableList = Service.Tables.List("publicdata", "samples").Execute();因为公共数据只有一个DataSet (示例),所以我们不能添加新的数据集,这样代码才能正常工作。
修改属性,如ServiceAccountEmail、KeyFile路径和密钥秘密等。
using Google.Apis.Auth.OAuth2;
using System.IO;
using System.Threading;
using Google.Apis.Bigquery.v2;
using Google.Apis.Bigquery.v2.Data;
using System.Data;
using Google.Apis.Services;
using System;
using System.Security.Cryptography.X509Certificates;
namespace GoogleBigQuery
{
public class Class1
{
private static void Main()
{
try
{
String serviceAccountEmail = "SERVICE ACCOUNT EMAIL";
var certificate = new X509Certificate2(@"KEY FILE NAME & PATH", "KEY SECRET", X509KeyStorageFlags.Exportable);
// SYNTAX: var certificate=new X509Certificate2(KEY FILE PATH+NAME (Here it resides in Bin\Debug folder so only name is enough), SECRET KEY, X509KeyStorageFlags.Exportable);
ServiceAccountCredential credential = new ServiceAccountCredential(
new ServiceAccountCredential.Initializer(serviceAccountEmail)
{
Scopes = new[] { BigqueryService.Scope.Bigquery, BigqueryService.Scope.BigqueryInsertdata, BigqueryService.Scope.CloudPlatform, BigqueryService.Scope.DevstorageFullControl }
}.FromCertificate(certificate));
// Create and initialize the Bigquery service. Use the Project Name value
// from the New Project window for the ApplicationName variable.
BigqueryService Service = new BigqueryService(new BaseClientService.Initializer()
{
HttpClientInitializer = credential,
ApplicationName = "APPLICATION NAME"
});
var SampleTableList = Service.Tables.List("publicdata", "samples").Execute();
var projectList = Service.Projects.List().Execute();
foreach (var projectDet in projectList.Projects)
{
var DataSetList = Service.Datasets.List(projectDet.Id).Execute();
foreach (var DataSetDet in DataSetList.Datasets)
{
var TablesList = Service.Tables.List(projectDet.Id, DataSetDet.Id).Execute();
}
}
}
catch (Exception e)
{
Console.WriteLine("Error Occurred: " + e.Message);
}
Console.ReadLine();
}
}
}发布于 2015-07-31 16:05:55
看起来这是获取公共数据集列表的最佳来源:http://www.reddit.com/r/bigquery/wiki/datasets
发布于 2016-04-23 05:25:56
我知道如何在公共数据中获取数据集,问题是如何获得包含公共数据的项目列表?- Andrey 17 '15,21:27
以编程方式,用户只能获得他/她已被授予任何项目角色的项目列表:
Can View、Can Edit或Is Owner
公共数据通过与All Authenticated Users在数据集级别上共享而变得公开

因此,用户不能列出具有公共数据的项目。
https://stackoverflow.com/questions/24039522
复制相似问题