我正在尝试将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
是最后一列。
答案 0 :(得分:0)
我将SPROC中的列设置为VARCHAR(MAX)并且工作正常。