如何在 bcp 实用程序中处理 CRLF。使用 bcp 将 csv 文件还原到 Azure SQL 数据库中。文件以逗号分隔且内容为“”

问题描述 投票:0回答:1

我在使用 bcp 实用程序将数据导入 azure sql 数据库时遇到问题。

bcp dbo.Account in "D:ABC\Account.csv" -S xxxxx.database.windows.net -U jfsa -P xxxxxx -d dbname -a 4096 -b 50000 -k -E -h "tablock" -q -c -l 120 -t "," -r "0x0d0x0a" -o "D:\Logs\FileLog\account_output.txt" -e "D:\Logs\Error\account_err.txt" -m 100 -F 2

帐户 csv 中的内容

运行命令后没有收到任何错误,但出现以下消息

开始复制...

已复制 0 行。 网络数据包大小(字节):4096 时钟时间(毫秒)总计:1

azure-sql-database bcp data-import
1个回答
0
投票

将 csv 文件恢复到 Azure SQL 数据库中。

正如@Dai建议的那样,您还可以使用c#并使用

CsvHelper
NuGet库来填充传递到
System.Data.DataTable
SqlBulkCopy
。我使用了这种方法,如下所示。

以下是我遵循的步骤:

  • 连接字符串用于连接Azure SQL数据库。 tableNamecsvFilePath用于存储表名称和.csv文件路径。

  • 创建
  • StreamReader
    用于读取 CSV 文件,
    CsvHelper
    用于解析 csv 数据。

  • CSV 中的每条记录都是 DataClass 的实例。

    ToList()
    方法用于从 CSV 中读取所有记录。

  • 创建名为
  • DataTable

    dt
    以匹配 SQL 表的结构。它根据数据的结构配置列。

  • SqlBulkCopy
    用于将
    DataTable
    中的数据插入到 Azure SQL 数据库中。

下面是我尝试过的代码:

static void Main(string[] args)
{
    string connectionString = "*****";
    string tableName = "SampleTable"; 
    string csvFilePath = @"C:\Users\****\Desktop\****\SampleDataFile.csv";

    using (SqlConnection connection = new SqlConnection(connectionString))
    {
        connection.Open();

        using (var reader = new StreamReader(csvFilePath))
        using (var csv = new CsvReader(reader, new CsvConfiguration(CultureInfo.InvariantCulture)))
        {
            var records = csv.GetRecords<DataClass>().ToList(); 
            DataTable dt = new DataTable();

            dt.Columns.Add("Id", typeof(int));
            dt.Columns.Add("FirstName", typeof(string));
            dt.Columns.Add("Age", typeof(int));

            foreach (var record in records)
            {
                dt.Rows.Add(record.Id, record.FirstName, record.Age);
            }

            using (SqlBulkCopy bulkCopy = new SqlBulkCopy(connection))
            {
                bulkCopy.DestinationTableName = tableName;
                bulkCopy.WriteToServer(dt);
            }
            Console.WriteLine("Data imported successfully.");
        }
    }
}

数据存储在 CSV 文件中: enter image description here

输出: enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.