【发布时间】:2014-10-18 07:09:41
【问题描述】:
我正在尝试使用 Bulk 方法将 500 MB 的文件插入到表中(列数据类型:VARBINARY(MAX)),SQL 大约需要 15 分钟来插入文件。我有 2GB 内存,我的电脑是 core 2 duo,我使用的是 SQL Server 2008 R2。
我的问题:
- 需要15分钟正常吗! ,还是太长了?
- 有更快的方法吗?
谢谢。
我的程序是SQL是
CREATE PROCEDURE [dbo].[UploadFile]
(
@FileName nvarchar(100) ,
@FileSize nvarchar(50) ,
@FileDescription nvarchar(200),
@FileExtontion nvarchar(10),
@DateUploaded nvarchar(50),
@FilePath nvarchar(3500),
@UserId int
)
AS
BEGIN
SET NOCOUNT ON;
declare @FileInBinary varbinary(MAX)
IF OBJECT_ID('#ORStable') IS NULL
BEGIN
-- Temporary stored into a hash table for avoid data error
CREATE TABLE #ORStable (Length BIGINT, vDocument VARBINARY(MAX))
DECLARE @SQL_QUERY NVARCHAR(4000)
SET @SQL_QUERY= 'INSERT INTO #ORStable
SELECT len(bulkcolumn), *
FROM OPENROWSET(BULK '''+@FilePath+''', SINGLE_BLOB) AS BinaryData'
exec SP_executesql @SQL_QUERY
END
SELECT TOP 1 @FileInBinary = vDocument FROM #ORStable
insert into [File] ([FileName], FileSize, FileDescription, FileExtontion,
DateUploaded, FileInBinary, UserId)
values (@FileName, @FileSize, @FileDescription, @FileExtontion,
@DateUploaded, @FileInBinary, @UserId)
DROP TABLE dbo.#ORStable
END
【问题讨论】:
-
这不是编程题,请移步至Database Administrators。
-
好吧 - 向我们展示您的代码!您的 SQL 语句是什么?您要插入的表的结构是什么?
-
即使考虑到正在制作此数据的多个副本,这确实非常慢。也许系统会因为这些副本而开始分页。在运行时查找硬页面错误的增量。使用Process Explorer,使用系统内存信息“Window”。
标签: sql sql-server-2008-r2 bulkinsert