从VARBINARY包含CSV文件的批量插入

时间:2018-07-26 18:36:13

标签: sql sql-server csv bulkinsert varbinary

我有一个CSV文件,该文件需要在数据库中BULK INSERT存储。


实际方案是:

  1. 客户端生成 file01.csv
  2. 客户端 file01.csv 移动到共享文件夹 \\ SERVERNAME \ Sharing 中,该文件夹指向 C:\ Data < / strong>在服务器
  3. Client 告诉数据库文件名为 file01.csv
  4. 服务器 BULK INSERT C:\ Data \ file01.csv 插入最终表
  5. 服务器从其队列中删除 file01.csv
    (稍后将删除)

Windows共享文件夹有点漏洞和不稳定,所以我想让它有所不同:

  1. 客户端生成 file01.csv
  2. 客户端VARBINARY(MAX)列中插入 file01.csv
  3. 服务器模拟来自VARBINARY CSV ,并将其BULK INSERT放入最终表中
    (不在服务器端生成任何文件)

我发现进行第二种选择的唯一方法是:

  1. 服务器根据VARBINARY数据生成 temp.csv
  2. 服务器 BULK INSERT temp.csv 放入决赛桌
    (稍后将删除)

是否可以使用VARBINARY变量代替BULK INSERT中的文件?

或者如果不可能的话,还有更好的方法吗?

(在Google中搜索了答案,仅找到了如何从CSV文件中读取VARBINARY值,因此我的问题可能是重复的)

2 个答案:

答案 0 :(得分:0)

您可以执行描述的一种方法是使用脚本任务创建SSIS包(或与此相关的控制台应用程序),该脚本任务将Varbinary列读取到单列DataTable中,并解析为“最终表格式”数据表,然后进行批量插入。整个过程将在内存中进行。

答案 1 :(得分:0)

您可以将varbinary(max)数据插入FileTable中。 SQL Server实际上会将数据写入本地文件,然后可以使用BULK INSERT处理。