我正在尝试使用 BULK INSERT 将数据从 CSV 文件导入到表中。下面是我的工作存储过程来完成这个:
USE [Database]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[delete_fill]
AS
TRUNCATE TABLE dataImport
BULK
INSERT dataImport
FROM 'c:\fileshare\temp.CSV'
WITH
(
FIRSTROW = 2,
FIELDTERMINATOR = ',',
ROWTERMINATOR = '\n'
)
SELECT * FROM dataImport ORDER BY StoreID, ItemID
RETURN
现在,我可能向 CSV 文件添加了 2 个新列。如何修改我的存储过程以考虑两个新列,同时接受只有三列的文件,使数据库中的两个新列为空。
简单地向表 dataImport 添加两列并运行该过程是行不通的。我收到此错误:“第 2 行第 3 列(价格)的消息 4864,级别 16,状态 1,过程 delete_fill,第 7 行批量加载数据转换错误(指定代码页的类型不匹配或无效字符)。”
根据要求的 dataImport 结构和 csv 数据示例:
Create table dataImport(
StoreID BIGINT not null,
ItemID BIGINT not null,
Price money not null,
TwoforQuantity Int,
TwoforPrice money
)
3列:
StoreID, ItemID, Price
133,51425,11.79
133,80277,1.49
133,15544,5.28
5列:
StoreID, ItemID, Price, IntField, MoneyField
133,51425,11.79,2,20.99
133,80277,1.49,2,2.00
133,15544,5.29,3,14.99