Sql server 数据导入和处理-CSV

Sql server 数据导入和处理-CSV,sql-server,database,tsql,Sql Server,Database,Tsql,在SQLServer2008R2上,我有许多存储为CSV的数据源和3NF中的数据库表结构。数据源中的某些列是不需要的 我想做的是将来自每个数据源的数据插入到一个单独的临时表中,在这个临时表中,数据类型(最好是列名)是根据插入的数据声明的。如果这不可能,那么将数据作为char数据类型导入会有所帮助 从这里,我想将相关数据选择到我的标准数据库结构中,并在完成后删除临时表 我想我必须使用一些cast语句来确保数据的格式正确。我很乐意编写一个存储过程来实现这一点,尽管数据是定期发布的,并且偶尔会更改结构

在SQLServer2008R2上,我有许多存储为CSV的数据源和3NF中的数据库表结构。数据源中的某些列是不需要的

我想做的是将来自每个数据源的数据插入到一个单独的临时表中,在这个临时表中,数据类型(最好是列名)是根据插入的数据声明的。如果这不可能,那么将数据作为char数据类型导入会有所帮助

从这里,我想将相关数据选择到我的标准数据库结构中,并在完成后删除临时表

我想我必须使用一些cast语句来确保数据的格式正确。我很乐意编写一个存储过程来实现这一点,尽管数据是定期发布的,并且偶尔会更改结构,因此需要一些手动工作

我曾尝试使用大容量插入来执行此操作,但我收到了关于临时表的无效对象名的消息208

USE db1;
GO
BULK INSERT #TempDetails FROM 'C:\Documents\Data\Text Files\Details.txt'
WITH
    (
        DATAFILETYPE = 'char'
        , FIELDTERMINATOR = ','
        , ROWTERMINATOR = '\n'
    );
返回

Msg 208, Level 16, State 82, Line 2
Invalid object name '#TempDetails'.
对我来说,实现这一目标的最佳方式是什么


我的备选方案是将CSV导入Access,然后将其导入SQL进行处理,但我希望这是一种易于复制的代码。

批量插入应该是实现所需操作的最简单方法。能否提供代码示例(特别是如何声明临时表以及如何尝试检索数据)?
BULK INSERT
要求目标对象已经存在。使用
OPENROWSET
将允许
SELECT…INTO…FROM…
构造,从而绕过此要求