Ejemplo n.º 1
0
        /// <summary>
        /// Returns a data table containing column metadata of the reader.
        /// </summary>
        /// <returns>a DataTable containing column metadata.</returns>
        public override DataTable GetSchemaTable()
        {
            DisposeCheck();
            if (tables.Current == null)
            {
                return(null);
            }
            string projectId = bigQueryCommand.Connection.ProjectId;
            string dataSetId = bigQueryCommand.Connection.DataSetId;
            string tableId   = tables.Current.TableReference.TableId;

            DataTable dataTable = new DataTable {
                TableName = tableId
            };

            dataTable.Columns.Add("ColumnName", typeof(string));
            dataTable.Columns.Add("DataType", typeof(Type));

            try {
                Table tableSchema = bigQueryService.Tables.Get(projectId, dataSetId, tableId).Execute();
                foreach (var tableFieldSchema in tableSchema.Schema.Fields)
                {
                    dataTable.Rows.Add(tableFieldSchema.Name, BigQueryTypeConverter.ToType(tableFieldSchema.Type));
                }
            }
            catch (GoogleApiException e) {
                throw e.Wrap();
            }

            return(dataTable);
        }
Ejemplo n.º 2
0
        JobsResource.QueryRequest CreateRequest() {
            BigQueryParameterCollection collection = (BigQueryParameterCollection)bigQueryCommand.Parameters;
            if(!IsStandardSql) {
                foreach(BigQueryParameter parameter in collection) {
                    bigQueryCommand.CommandText = bigQueryCommand.CommandText.Replace(parameterPrefix + parameter.ParameterName.TrimStart(parameterPrefix), ConvertToStringForLegacySql(parameter));
                }    
            }

            QueryRequest queryRequest = new QueryRequest { Query = PrepareCommandText(bigQueryCommand), TimeoutMs = bigQueryCommand.CommandTimeout != 0 ? (int)TimeSpan.FromSeconds(bigQueryCommand.CommandTimeout).TotalMilliseconds : int.MaxValue, UseLegacySql = !IsStandardSql };
            if(IsStandardSql) {
                queryRequest.QueryParameters = new List<QueryParameter>();
                foreach(BigQueryParameter parameter in collection) {
                    var queryParameter = new QueryParameter {
                        Name = parameter.ParameterName,
                        ParameterType = new QueryParameterType {
                            Type = BigQueryTypeConverter.ToParameterStringType(parameter.BigQueryDbType)
                        },
                        ParameterValue = new QueryParameterValue {Value = ConvertToString(parameter)}
                    };
                    queryRequest.QueryParameters.Add(queryParameter);
                }
            }
            
            JobsResource.QueryRequest request = bigQueryService.Jobs.Query(queryRequest, bigQueryCommand.Connection.ProjectId);
            return request;
        }
Ejemplo n.º 3
0
 /// <summary>
 /// Gets the type of the specified column.
 /// </summary>
 /// <param name="ordinal"> The ordinal number of a column.</param>
 /// <returns>The type of the specified column.</returns>
 public override Type GetFieldType(int ordinal) {
     DisposeCheck();
     RangeCheck(ordinal);
     string type = schema.Fields[ordinal].Type;
     Type fieldType = BigQueryTypeConverter.ToType(type);
     if(fieldType != null)
         return fieldType;
     throw new ArgumentOutOfRangeException(nameof(ordinal), ordinal, "No field with ordinal");
 }
Ejemplo n.º 4
0
        object ChangeValueType(object value, int ordinal) {
            if(value == null)
                return null;

            BigQueryDbType bigQueryType = BigQueryTypeConverter.ToBigQueryDbType(schema.Fields[ordinal].Type);
            if(bigQueryType == BigQueryDbType.Timestamp) {
                return UnixTimeStampToDateTime(value);
            }

            return Convert.ChangeType(value, BigQueryTypeConverter.ToType(schema.Fields[ordinal].Type), CultureInfo.InvariantCulture);
        }
 public void TimesTest(string bigQueryTypeName, Type systemType, BigQueryDbType bigQueryDbType, DbType dbType)
 {
     Assert.Equal(systemType, BigQueryTypeConverter.ToType(bigQueryTypeName));
     Assert.Equal(bigQueryDbType, BigQueryTypeConverter.ToBigQueryDbType(bigQueryTypeName));
     Assert.Equal(dbType, BigQueryTypeConverter.ToDbType(bigQueryDbType));
 }
 public void StringConvertTest(string stringType, Type systemType, BigQueryDbType bigQueryType)
 {
     Assert.Equal(systemType, BigQueryTypeConverter.ToType(stringType));
     Assert.Equal(bigQueryType, BigQueryTypeConverter.ToBigQueryDbType(stringType));
 }
 public void DefaultValueTest(object defaultValueFromSystem, DbType dbType)
 {
     Assert.Equal(defaultValueFromSystem, BigQueryTypeConverter.GetDefaultValueFor(dbType));
 }
 public void TypeAndDbTypeTest(Type type1, DbType dbType, Type type2)
 {
     Assert.Equal(dbType, BigQueryTypeConverter.ToDbType(type1));
     Assert.Equal(type2, BigQueryTypeConverter.ToType(dbType));
 }
 public void TypeAndBigQueryDbTypeTest(Type type1, BigQueryDbType bigQueryType, Type type2)
 {
     Assert.Equal(bigQueryType, BigQueryTypeConverter.ToBigQueryDbType(type1));
     Assert.Equal(type2, BigQueryTypeConverter.ToType(bigQueryType));
 }
 public void DbTypeAndBigQueryDbTypeTest(DbType dbType1, BigQueryDbType bigQueryType, DbType dbType2)
 {
     Assert.Equal(bigQueryType, BigQueryTypeConverter.ToBigQueryDbType(dbType1));
     Assert.Equal(dbType2, BigQueryTypeConverter.ToDbType(bigQueryType));
 }