SQL Server 2008 - TSQL读取CSV文件

时间:2013-07-25 15:15:17

标签: sql sql-server-2008 tsql csv import

我正在开发一个基本上需要将CSV文件导入SQL Server 2008 R2数据库的项目。 CSV文件是从Excel文件生成的,该文件由“经理”填充,其员工的公关时间为。这还包括一些其他信息,例如员工正在处理的工作和阶段,还包括设备的小时数(如果使用)。

为此生成CSV文件后,它不完全是通常的基于“列”的CSV文件。它更像是一个基于“行”的CSV文件,每行都是唯一的。由于涉及这个警告,我不能直接转储(使用BULK插入或OPENROWSET)到SQL,这将创建一个(临时)表与适当的列填充数据。

我希望根据行中该字段的“位置”使用CSV文件中的字段。

因此,基本上数据的位置将保持不变,因为每个CSV都基于TEMPLATE文件 - 所以我所要做的就是使用SQL代码浏览CSV文件,根据它的位置找到正确的字段在行。我希望这能让你们更好地理解我在这里想要实现的目标。 抱歉长篇文章。

我研究了一下,这是我到目前为止所得到的:

通过自定义SQL函数将CSV文件读入临时表(从文件中读取行https://www.simple-talk.com/sql/t-sql-programming/reading-and-writing-files-in-sql-server-using-t-sql/

这个很有意思。将整个文件转储为BLOB,然后您可以筛选数据。 http://www.mssqltips.com/sqlservertip/1643/using-openrowset-to-read-large-files-into-sql-server/

最后,这一个必不可少的分割行,并创建每行的分隔记录。有趣.. http://ask.sqlservercentral.com/questions/17408/how-to-read-a-text-file.html

如果有人有任何我可以遵循的建议或步骤,我会非常感激。

对于Mods:如果我发布了不应该在这里的东西(特别是链接),请随时删除它。如果我这样做,我道歉。

非常感谢..希望听到一些积极的回应! :)

温馨的问候, Pranav

1 个答案:

答案 0 :(得分:0)

如果文件不是太大,另一个选项是使用VBA宏在Excel中对文件进行后处理。当然,您需要使用Excel对象模型和VBA加快速度,但录制功能使其变得非常简单。 VBA方法的一个优点是,您似乎确实希望逐行处理,而VBA则更好,而SQL更适合基于集合的操作。