我的SQL Server 2012表格为CUST_TABLE
。它已经有很多客户记录(超过10,000)。
我有一个CSV,第一列客户编号是我的主键。第二列有电子邮件地址。此CSV的第一行包含标题为custnum和email的列。 CSV有125个数据行。我正在使用SSMS,只想更新125个客户记录并更改他们的电子邮件。
我找到的唯一解决方案是使用更新语句来更改数据。还有其他更简单的方法吗?就像使用导入数据功能一样,右键单击数据库,然后将鼠标悬停在任务上。谢谢。
答案 0 :(得分:0)
将csv读入临时表,然后使用临时表更新表。
例如:
USE yourdb;
GO
IF OBJECT_ID('tempdb.dbo.#tmp', 'U') IS NOT NULL
DROP TABLE #tmp;
GO
CREATE TABLE #tmp (
t_cust_nr NVARCHAR(MAX),
t_email NVARCHAR(MAX)
)
SET NOCOUNT ON;
-- Read the csv, skip the first row
BULK INSERT #tmp
FROM 'C:\path\to\your.csv'
WITH (FIRSTROW = 2, FIELDTERMINATOR = ',', ROWTERMINATOR ='\n');
-- Trim whitespace
UPDATE #tmp
SET t_cust_nr = LTRIM(RTRIM(t_cust_nr)),
t_email = LTRIM(RTRIM(t_email));
-- Add your update statement here...
-- You also might have to cast the t_cust_nr to a diff. data type if needed.
SET NOCOUNT OFF;
DROP TABLE #tmp;