7

次のように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 を返します。

publicdata のデータセット名を取得できますか?? そしてどうやって??

4

3 に答える 3

1

以下のコードを使用して、プロジェクト、データ セット、およびテーブルのリストを取得できます。

Public-Data を取得するには、以下のコードを使用できます

var SampleTableList = Service.Tables.List("publicdata", "samples").Execute();

publicdata には DataSet (サンプル) が 1 つしかないため、新しいデータセットを追加することはできず、このコードは正しく機能します。

ServiceAccountEmail、KeyFile パス、Key Secret などのプロパティを変更します。

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-16T07:31:55.293 に答える
0

これは、公開データセットのリストを取得するための最良のソースのようです: http://www.reddit.com/r/bigquery/wiki/datasets

于 2015-07-31T16:05:55.277 に答える