【问题标题】:Consultation on rapid big data entry to sql-server through C# - bulkC#大数据快速录入sql-server的咨询--bulk
【发布时间】:2018-08-21 12:06:19
【问题描述】:

我有 C# WinForm 程序,我需要将快速大数据插入到 sql-server。

sql-server 在 cloude server 中,我在本地计算机上加载的文件。

文件是文本(制表符分隔)

d:\TEST\TEST.txt 并拥有完全权限

BAR    DES     MAK
111    aaa     222
333    bbb     333
.
.

sql-server 表是CatTbl

BAR nvarchar(250)
DES nvarchar(250)
MAK nvarchar(250)

我尝试这样插入:

SQL = @"BULK INSERT CatTbl FROM 'd:\TEST\TEST.txt' WITH (CODEPAGE=1255,FIELDTERMINATOR = '\t')";
Cmd = new SqlCommand(SQL, Conn);
Cmd.ExecuteNonQuery();
Cmd.Dispose();

当我在本地 sql-server 上工作时,它的效果非常好。

但在 cloude sql-server 中出现错误:

Cannot bulk load because the file "d:\TEST\TEST.txt" could not be opened. Operating system error code 21(The device is not ready.).
  • 请注意sql-server连接成功

我在网上搜索并没有找到解决问题的答案。我会很感激一些帮助

【问题讨论】:

  • d:\TEST\TEST.txt 是否存在于您的云 SQL Server 上?你在使用 Azure SQL 吗?还有什么?
  • 如果该文件可在客户端访问,请在您的应用中使用 SqlBulkCopy 而不是 T-SQL BULK INSERT
  • d:\TEST\TEST.txt 在我的云中不存在。我不使用 Azure SQL 我使用常规的 SQL 服务器。客户端上的文件 TEST.txt

标签: c# sql-server database winforms


【解决方案1】:

因此,您需要以“我现在在哪里?”的心态工作。当您在计算机上时,D:\ 是您物理盒中的驱动器。如果您告诉服务器“我正在加载一个批量文件,并且它在 D:\file.txt 中”,它不会查看 -your-computer 的 D:\,它会查看它的 -own- D: \,并且该文件不存在。

你需要做的是首先将文件上传到某个地方,服务器可以访问,然后告诉服务器文件的路径是什么,相对于他。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多