Json使用cdata ado.net数据提供程序插入Google BigQuery

时间:2016-01-13 12:10:44

标签: c# sql-server json ado.net google-bigquery

我正在用c#开发一个控制台应用程序,以便将一组记录插入到Google BigQuery表中。使用cdata ado.net数据提供程序插入和选择数据。使用for循环插入数据时,它将插入数据,但在数据范围超过100 000行时需要很长时间才能插入。

所以我决定插入一个包含json格式数据行的json文件,而不是执行一组字符串查询。

但我没有一个想法如何做到这一点以及从哪里开始?有没有其他方法可以在C#中实现相同的功能 - > BigQuery?

 private static DataTable GetDataTableTest(string Query)
        {
            DataTable dt = null;
            SqlDm SqlDM = new SqlDm(ConfigurationManager.ConnectionStrings["SQLData"].ToString());
            SqlDM.StoredProcedureName = Query;
            dt = SqlDM.ExecuteDataTable();
            SqlDM = null;
            return dt;
        }
        private static void ADDToBigQueryTest()
        {
            string FileToInsert = "select Top 10 * from SalesTable";
            string InsertQuery = string.Empty;
            DataTable dt = GetDataTable(FileToInsert);
            if (dt != null && dt.Rows.Count > 0)
            {
                StringBuilder sbQuery = new StringBuilder();

                for (int i = 0; i < dt.Rows.Count; i++)
                {

                    sbQuery.AppendLine(dt.Rows[i][1].ToString());
                }

                InsertQuery = sbQuery.ToString();
            }


            using (GoogleBigQueryConnection BigCon = new GoogleBigQueryConnection(ConfigurationManager.ConnectionStrings["BigQuery"].ToString()))
            {

                GoogleBigQueryCommand BigCmd = new GoogleBigQueryCommand(InsertQuery, BigCon);
                BigCmd.ExecuteNonQuery();


            }
            Console.WriteLine("\n Inserted To BigQuery");
        }

1 个答案:

答案 0 :(得分:0)

适用于Google BigQuery的CData ADO.NET Provider支持INSERT INTO SELECT语句,您可以使用这些语句使用单个请求批量插入数据。

您可以通过将行插入本地临时表来执行此操作,然后进行INSERT INTO SELECT调用:

INSERT INTO publicdata:samples.github_nested (repository.name, MyCustomField__c) SELECT repository.name, MyCustomField__c FROM publicdata:samples.github_nested#TEMP

然后执行:

{{1}}

参考:http://cdn.cdata.com/help/DBA/ado/pg_insertselect.htm