首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在特定行上大容量插入Openrowset

在特定行上大容量插入Openrowset
EN

Stack Overflow用户
提问于 2016-10-17 12:18:35
回答 2查看 5.9K关注 0票数 2

我对SQL很陌生,但我正在尝试学习它的逻辑,我假设bulk insert将插入所有行--本例中是blob。(pdf文件)下面是我的代码,但我想要完成的是,将我放置在SQL server上的一个pdf文件插入到一个行中,其中包含我指定的匹配的主键。到目前为止,我遗漏了where子句来指定PK。

代码语言:javascript
运行
复制
   Declare @sql varchar(max)
   Declare @filePath varchar(max)
   Set @filePath = 'C:\iphone.pdf'
   Set @sql='INSERT INTO HDData.dbo.PurchasedCellPhoneInfo(Receipt) SELECT * FROM OPENROWSET(BULK '''+ @filePath+''', SINGLE_BLOB) AS BLOB'
   exec(@sql)

我可以使用更新的t查询而不是插入吗?如何删除指定要插入这个blob的特定行的位置?任何帮助都将不胜感激。

我也尝试过这样做,遵循@misterPositive关于更新查询的建议:

代码语言:javascript
运行
复制
 Declare @criteria varchar(50)
 SET @criteria ='352014075399147'
 UPDATE HDData.dbo.PurchasedCellPhoneInfo SET Receipt =
 (SELECT Receipt FROM OPENROWSET (BULK 'C:\352014075399147.pdf, SINGLE_BLOB') a)
 WHERE(IMEI = @criteria)

我确实收到了这样的消息:必须指定格式文件或三个选项中的一个-- SINGLE_BLOB、SINGLE_CLOB或SINGLE_NCLOB。我喜欢这个更新查询,因为它似乎符合我试图做的事情。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-10-17 12:44:23

您可以这样做来更新:

代码语言:javascript
运行
复制
UPDATE MyTable 
SET blobField = 
   (SELECT BulkColumn FROM OPENROWSET (BULK 'C:\Test\Test1.pdf', SINGLE_BLOB) a) 
WHERE (CriteriaField = @criteria)

下面是PK的另一种方式

代码语言:javascript
运行
复制
CREATE VIEW [dbo].[VWWorkDataLoad]
AS
SELECT RecordLine
FROM [dbo].[WorkDataLoad];

现在,大容量插入应该如下所示:

代码语言:javascript
运行
复制
BULK INSERT [dbo].[VWWorkDataLoad] FROM 'D:\NPfiles\TS082114.trn' 
WITH (FIRSTROW = 2,FIELDTERMINATOR = ',' , ROWTERMINATOR = '\n');
票数 3
EN

Stack Overflow用户

发布于 2016-10-17 12:50:58

如果您想插入新的记录,那么您可以有一个身份列为您的PK,而不必担心它。我还看到了在PK上设计没有标识的表时使用的函数。类似于select列表中的GetTableNamePK()。

如果您想要更新现有记录,那么您将需要像前面提到的where子句。这在测试中对我起了作用:

代码语言:javascript
运行
复制
Update TestBlob Set BinaryData = (SELECT * FROM OPENROWSET(BULK 'c:\temp\test.pdf', SINGLE_BLOB) AS BLOB)
    Where ID = 2

如果您不想使用标识或函数,则在ID是主键的情况下工作,我希望插入PK为3的BLOB:

代码语言:javascript
运行
复制
INSERT INTO TestBlob2 (ID, BinaryData) SELECT 3, * FROM OPENROWSET(BULK 'c:\temp\test.pdf', SINGLE_BLOB) AS BLOB
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40086216

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档