2012-06-13 124 views
4

我正在尝试将约10000行(从CSV文件)导入到现有表中。SQL Server 2012导入CSV到映射列

我只有1列,我试图导入,但在我的表中我有另一个栏名为TypeId,我需要设置为一个静态值,即99E05902-1F68-4B1A-BC66-A143BFF19E37

所以,我需要这样的东西

INSERT INTO TABLE ([Name], [TypeId]) 
Values (@Name (CSV value), "99E05902-1F68-4B1A-BC66-A143BFF19E37") 

任何例子将是巨大的。

感谢

+2

你能做到这一点吗?将CSV导入到保存表中。然后使用正常的插入语句将值,加上您的静态值复制到目标表中? * [由于CSV文件没有类型安全性,我通常会将它们复制到保留表中,并在我甚至考虑将数据插入目标表之前验证这些行。] – MatBailie

+0

是的,我可以导入临时表并然后做一个插入,不知道如果2012年提供了这个常见问题的任何性感改进 –

回答

5

如上进口提到的数据到一个临时表,然后该值插入实际的表

DECLARE @TempTable TABLE (Name nvarchar(max)) 

BULK INSERT @TempTable 
FROM ‘C:\YourFilePath\file.csv’ 
WITH (FIELDTERMINATOR = ‘,’, 
ROWTERMINATOR = ‘\n’ 
) 

INSERT INTO TABLE ([Name], [TypeId]) 
Select Name,'99E05902-1F68-4B1A-BC66-A143BFF19E37' from @TempTable 
+0

我认为'INSERT'是一个大的语法错误。 – MatBailie

+0

我的错误更新了我的答案。 – praveen

2

如果你准备使用工具来做到这一点,你可以使用SQL Server导入和导出向导。您可以从“开始”菜单,从SQL Server Management Studio,从SQL Server数据工具(SSDT)或在命令提示符处启动SQL Server导入和导出向导。 您可以使用此工具轻松映射目的地和来源列。稍后如果你想更新另一列,你可以使用代码。