存储在SQL 2012 FileTable中的150MB csv文件 - 如何查询要插入表中的数据

时间:2012-05-31 15:33:33

标签: csv filestream bulk sql-server-2012 filetable

我有一个带有Persons表的简单数据库

UserId, Name,DOB

该表包含750,000行(人物)。

我收到一个可能包含1000万行的CSV文件

UserId, Address1, Address2, Address3, TownCity, Region, Country, 
Telephone1, Telephone2, Telephone3 

用户当前和之前的联系方式

此文件中包含usersId,因此我可以将联系人详细信息与用户进行匹配。

人与联系方式之间存在一对多的关系

我的最终目标是选择UserId, Name, DOB, Address1, Address2......

的查询

目前我使用.net打开csv文件并逐行读取并将每条记录单独写入SQL服务器(可能是1000万sql插入) - 这很慢,所以我看着其他人这样做。< / p>

我正在尝试SQL 2012 FileTable / Stream - 所以我将csv文件存储在FileTable中并且可以这样查询

SELECT [file_stream], [name], [path_locator], [parent_path_locator],
       [file_type], [cached_file_size], [creation_time]  
FROM [MYDB_FileTable].[dbo].[AddressFileTable]

是否有人知道我是否可以查询FileStream和批量插入或使用核心csv数据的任何其他方式?

我看了

DECLARE @csv varchar(max)
SELECT @csv = convert(varchar(max), [file_stream])  FROM PKIFileTable

但由于文件大小不起作用

欢迎任何建议。

3 个答案:

答案 0 :(得分:1)

您可以将SSIS用于该任务。完成你需要的东西应该相当简单。

什么是慢?

为什么删除我以前的答案?这是怎么回事?

我的答案基于最后一句:“使用核心csv数据的任何其他方式?”

答案 1 :(得分:0)

感谢Janus007 - 似乎有人指出显而易见的 - 使用SSIS。通常是最简单的答案。 我正在使用SSIS成功完成此任务

但我仍然想知道如何最好地查询存储在文件流中的CSV文件

答案 2 :(得分:0)

另一种解决方案可能是在C#中开发CLR并使用它来处理FileStream,利用这种方法,你仍然可以使用TSQL的漂亮语言并在C#中轻松调试。