jwcolby
jwcolby at colbyconsulting.com
Mon May 21 17:17:44 CDT 2012
I am trying to get Bulk Insert (import) working with CSV files ("," delimited) using a format file.
I have about 60 files with around 250 million total records that I need to import. Just using the
built-in wizard works but is a royal PITA because I have to modify each and every time to widen the
fields to 250 characters, build each file by hand etc.
So I have a SP that creates the tables. I then use the following to try to do the import:
USE [_DataEmailDD]
GO
/****** Object: StoredProcedure [dbo].[sp_AZIn_BCPInOneFile] Script Date: 05/21/2012 17:19:43
******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: <Author,,Name>
-- Create date: <Create Date,,>
-- Description: <Description,,>
-- =============================================
ALTER PROCEDURE [dbo].[sp_AZIn_BCPInOneFile]
-- Add the parameters for the stored procedure here
@DBName varchar(50), @TblName varchar(50),
@FilePath varchar(1000), @FileName varchar(255)
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
-- Insert statements for procedure here
declare @sql varchar(8000)
DECLARE @FileSpec varchar(1000)
Declare @ErrorDesc varchar(4000)
Declare @ErrorNo int
Declare @RecsAffected int
set @filespec = @FilePath
set @filespec = @filespec + @FileName
begin try
set @SQL = 'BULK INSERT [' + @DBName + '].[dbo].[' + @TblName + '] FROM ' + '''' + @filespec +
'''' + ' WITH (FORMATFILE= ' + '''' + '\\Azul\PSM\data\_DataEmailDD\EmailImpFormat.xml' + '''' + ')'
print @SQL
exec (@SQL)
select @RecsAffected = @@RowCount
select @ErrorDesc = 'Success'
select @ErrorNo = 0
return 0
end try
begin catch
select @ErrorNo = @@Error
select @ErrorDesc = ERROR_MESSAGE()
print 'There was a BCP error IMPORTING data into ' + @DBName
print ERROR_MESSAGE()
return -1
end catch
--
Standard stuff except for the SQL Statement which when printed gives me the following:
BULK INSERT [_DataEmailDD].[dbo].[ConsEmail_AK] FROM '\\Azul\PSM\Data\_DataEmailDD\ConsEmail_AK.CSV'
WITH (FORMATFILE= '\\Azul\PSM\data\_DataEmailDD\EmailImpFormat.xml')
and execution thereof gives me the infamous (and totally useless)
There was a BCP error IMPORTING data into _DataEmailDD
Cannot fetch a row from OLE DB provider "BULK" for linked server "(null)".
It just seems like my chance of making this work is pretty minimal.
I have spent about 4 hours Googling to even get as far as I am and the
Cannot fetch a row from OLE DB provider "BULK" for linked server "(null)".
returns about a million entirely different pages for a million entirely different problems. It is
as if any problem whatsoever returns this message.
So, what do you say? Is this a "you gotta be an expert so forget it" kinda deal? All of the
various web pages explaining how to do this make it sound so easy but of course no one mentions how
to troubleshoot the mess.
--
John W. Colby
Colby Consulting
Reality is what refuses to go away
when you do not believe in it