【问题标题】:Copying CSV file to on-premise SQL Server -BCP utility C# .NET Core将 CSV 文件复制到本地 SQL Server -BCP 实用程序 C# .NET Core
【发布时间】:2021-11-13 18:35:30
【问题描述】:

我正在尝试将 CSV 文件加载到本地 SQL Server,我尝试在我的 C# 代码中使用 BCP 实用程序,这是我所做的并面临以下错误。

注意:我创建了一个 SQL 表名 AzureBlob,其中已经有 2 列,其中没有数据。

static void Main(string[] args)
{
    string strCmdText;
    strCmdText = "/C bcp master..AzureBlob out C:\\data\\blbTest.csv -S .\\ -c -C RAW -T";
    Process process = new Process();
    ProcessStartInfo startInfo = new ProcessStartInfo();
    startInfo.WindowStyle = ProcessWindowStyle.Hidden;
    startInfo.FileName = "cmd.exe";
    startInfo.Arguments = strCmdText;
    process.StartInfo = startInfo;
    process.Start();
    process.WaitForExit();
    process.Close();
    process.Dispose();
}

我收到以下消息,但是它不会将任何记录复制到 SQL 表:任何指针

开始复制 已复制 0 行

我的示例 CSV 文件有两列,其中包含示例文本: A 列 B 列 你好世界

【问题讨论】:

  • 您可以使用 BULK INSERT Transact-SQL 语句执行 BCP,也可以使用 SqlCommand 的 ExecuteNonQuery 方法来执行。
  • 如果从文件加载表格,方向应该是in而不是out。我建议您避免将主系统数据库用于用户表。
  • @DanGuzman 谢谢,我已将命令修改如下,但仍然没有运气。 strCmdText = "/C bcp msdb..AzureBlob in C:\\PoornimaDevelop\\BlobQuickstartV12\\data\\blbTest.csv -S .\\ -c -C RAW -T";
  • @DaleK 问题已修正。谢谢

标签: c# sql-server csv bcp


【解决方案1】:

自从我上次使用 BCP 以来已经有一段时间了,但如果我没记错的话,您需要将 CSV 文件保存在 SQL Server 存储中 - 而不是本地计算机上才能进行导入。

【讨论】:

  • BCP 是一个客户端应用程序,因此它可以在可以访问文件和服务器的任何地方运行,不要与数据库引擎需要访问文件的 T-SQL BULK INSERT 语句混淆。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-08-21
  • 2020-05-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-25
  • 1970-01-01
相关资源
最近更新 更多