Использование BULK INSERT для вставки данных CSV в таблицу SQL Server - PullRequest
0 голосов
/ 02 июля 2019

Моя конечная цель - взять CSV-файл и вставить все строки в существующую таблицу SQL.

В настоящее время пользователь загружает файл csv в мое веб-приложение, которое отправляет данные в виде данных формы.

Это мой контроллер, который превращает CSV-файл в байты. Это работает правильно.

[HttpPost("UploadInvoice")]
public async Task<object> UploadInvoice()
{
        var form = Request.ReadFormAsync().Result;
        var csvFile = form.Files[0];

        using (var stream = csvFile.OpenReadStream())
        {
            var bytes = new byte[stream.Length];
            stream.Read(bytes, 0, bytes.Length);

            var str = await data.Finance.UploadInvoice(bytes);
            return new { Request = str };
        }
}

Это мой модуль, который принимает байты в качестве параметров и должен вставлять данные, но не добавляет их.

public async Task<object> UploadInvoice(byte[] bytes)
{
        var dt = new DataTable();
        dt.Columns.Add("Data", typeof(Byte[]));

        for (var i = 1; i < 1000000; i++)
            dt.Rows.Add(i + 1, "Data " + i + 1);

        using (var connection = new SqlConnection(ConnectionString.SQL08R2.ToString()))
        {
            connection.Open();

            var transaction = connection.BeginTransaction();

            using (var sqlBulk = new SqlBulkCopy(connection, SqlBulkCopyOptions.KeepIdentity, transaction))
            {
                sqlBulk.DestinationTableName = "Distribution.dbo.fedex_uploaded_invoice";
                sqlBulk.WriteToServer(dt);
            }
        }

        return await SqlConnector.ExecuteAsync<InvoiceModel>(ConnectionString.SQL08R2, null, null);
    }
}

Нет сообщений об ошибках, просто не вставлены строки. Я знаю, что массовая вставка обычно не используется с параметрами, и это кажется обходным решением. Я очень новичок в C #, так что, если я пойду совершенно неправильно, пожалуйста, дайте мне знать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...