SQL Server 2014 CSV导入无法识别行/行的结尾

时间:2016-07-26 19:19:32

标签: stored-procedures sql-server-2014

我正在尝试将csv文件批量插入SQL Server 2014.我已经设法确定它无法识别CSV文件中的行尾字符。

我得到的错误是:

  

消息4864,级别16,状态1,过程spTempImport,行74批量加载   数据转换错误(类型不匹配或无效字符   行1,第51列(Val_0000)的指定代码页。

我已经在这里阅读了其他帖子,并且已经尝试了所有这些帖子,我无法让它工作。

SPROC如下:

 USE [xxxxxxx]
 GO
 /****** Object:  StoredProcedure [dbo].[spTempImport]    Script Date: 26/07/2016 19:59:56 ******/
 SET ANSI_NULLS ON
 GO
 SET QUOTED_IDENTIFIER ON
 GO

 ALTER PROCEDURE [dbo].[++++++++]

 AS
 BEGIN

 SET NOCOUNT ON

 CREATE TABLE #tmp (
         --[BatchID] NVARCHAR(MAX) NOT NULL,
         [ID] NVARCHAR(50) NOT NULL,
         [Serial] NVARCHAR(30) NOT NULL,
         [Date] VARCHAR(15) NOT NULL,
         [Val_0030]NVARCHAR(15) NULL,       
         [Val_0000]NVARCHAR(15) NULL
     )

     BULK INSERT #tmp
     FROM 'C:\Temp\test1.csv'
     WITH
     (
         FIRSTROW = 1,
    FIELDTERMINATOR = ',',
    ROWTERMINATOR = '\r\n'
)


SELECT * FROM  #tmp

我尝试过使用\ r \ n \ n \ r \ n \ CR \ LF LF \ CR和各种十六进制代码。我在excel中创建了文件并保存为CSV,但它无效。我将数据复制到记事本中,它不会识别换行/回车。

我做错了什么?

P.S。我在代码示例中删除了列的soem,val列与名称不同,[Val_0000]NVARCHAR(15) NULL是最后一列。

1 个答案:

答案 0 :(得分:0)

我将SPROC中的列设置为VARCHAR(MAX)并且工作正常。