簡體   English   中英

如何批量插入數據

[英]How To Append Data in Bulk Insert

我正在嘗試讀取保存在數據表中的數據塊。使用下面的查詢將這個答案保存在數據表3中,然后使用buk插入TO Table_1。

adapter.SelectCommand = new SqlCommand("SELECT * FROM (SELECT ROW_NUMBER() OVER (ORDER BY DistrictName) AS Row, *FROM Dwh_staging_table) AS a WHERE row BETWEEN 0 AND 1000001", con1);

這是單獨的SQL語句:

SELECT * FROM 
    (SELECT ROW_NUMBER() OVER (ORDER BY DistrictName) AS Row, *
     FROM Dwh_staging_table
    ) AS a
WHERE row BETWEEN 0 AND 1000001

我將如何在Table_1中的1000001之后追加行。

我們使用select查詢與LimitSQLITE

SELECT * from [table-name]限制下限,上限

因此,您的查詢將類似於

SELECT * FROM Dwh_staging_table ORDER BY DistrictName Limit 0, 100000

對於下一個區塊,

SELECT * FROM Dwh_staging_table ORDER BY DistrictName Limit 100000, 200000

這是有關如何在TSql中進行分頁的好文章

http://joelabrahamsson.com/my-favorite-way-to-do-paging-with-t-sql/

您可以使用SqlBulkCopy類。

以下代碼將有效地將數據從SourceTableName @ SourceConnectionString復制到DestinationTableName @ DestinationConnectionString,一次復制100000行。 顯然,用您的連接字符串和表名替換標記。

using (var sourceConnection = new SqlConnection("[SourceConnectionString]"))
using (var destinationConnection = new SqlConnection("[DestinationConnectionString]"))
{
    sourceConnection.Open();
    destinationConnection.Open();

    var sourceCommand = sourceConnection.CreateCommand();
    sourceCommand.CommandType = CommandType.Text;
    sourceCommand.CommandText = "SELECT * FROM [SourceTableName]";
    var sourceReader = sourceCommand.ExecuteReader();

    var bulkCopy = new SqlBulkCopy(destinationConnection)
    {
        DestinationTableName = "[DestinationTableName]",
        BatchSize = 100000
    };

    bulkCopy.WriteToServer(sourceReader);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM