3

我有一个带有 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 插入) - 这很慢,所以我正在寻找其他方法。

我正在试验 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

但由于文件大小,这不起作用

欢迎任何建议。

4

3 回答 3

1

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

什么是慢?

为什么我之前的回答被删了?这里发生了什么?

我的回答基于最后一个条款:“任何其他处理核心 csv 数据的方式?”

于 2012-05-31T17:55:55.117 回答
0

谢谢 Janus007 - 似乎有人指出了明显的问题 - 使用 SSIS。通常是最简单的答案。我正在使用 SSIS 成功地做到这一点

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

于 2012-06-01T11:04:59.927 回答
0

Another solution could be to develop a CLR in C# and handle the FileStream with that, utilizing this method you can still use the nice language of TSQL and easily debug in C#.

于 2012-06-01T16:06:33.637 回答