我有一个带有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
但由于文件大小不起作用
欢迎任何建议。
答案 0 :(得分:1)
您可以将SSIS用于该任务。完成你需要的东西应该相当简单。
什么是慢?
为什么删除我以前的答案?这是怎么回事?
我的答案基于最后一句:“使用核心csv数据的任何其他方式?”
答案 1 :(得分:0)
感谢Janus007 - 似乎有人指出显而易见的 - 使用SSIS。通常是最简单的答案。 我正在使用SSIS成功完成此任务
但我仍然想知道如何最好地查询存储在文件流中的CSV文件
答案 2 :(得分:0)
另一种解决方案可能是在C#中开发CLR并使用它来处理FileStream,利用这种方法,你仍然可以使用TSQL的漂亮语言并在C#中轻松调试。