sql-server - 使用从具有 XML 批量格式文件的 .csv 文件插入 Openrowset 创建临时表

标签 sql-server xml database csv bulkinsert

Microsoft 的技术页面说您可以执行以下操作,使用格式文件将 .csv 文件导入到物理样本表中。我有那个工作。

Using the OPENROWSET Bulk Rowset Provider

The following example uses INSERT ... SELECT * FROM OPENROWSET(BULK...) to bulk import data from the myTestFormatFiles-c.Dat data file into HumanResources.myTestFormatFiles table in the AdventureWorks sample database. This example uses an XML format file, MyTestFormatFiles.Xml. The example deletes any existing table rows before importing the data file. In SQL Server Management Studio Query Editor, execute:

USE AdventureWorks2012;
DELETE myTestFormatFiles;
GO
INSERT INTO myTestFormatFiles
    SELECT *
      FROM  OPENROWSET(BULK  'C:\myTestFormatFiles-c.Dat',
      FORMATFILE='C:\myTestFormatFiles.Xml'     
      ) as t1 ;
GO
SELECT * FROM myTestFormatFiles;
GO
-- When you finish using the sample table, you can drop it using the following statement:
DROP TABLE myTestFormatFiles

但是,我想完全做到这一点,但要导入到尚不存在的临时#table(类似于可以使用 select into 语句创建新表的方式)。这可能吗?如果不可能,为什么不呢?

附加问题:您可以使用 select into 创建临时表吗? 我知道你可以使用 select into to create a table .

现在我可以使用 import bulk OPENROWSET 和一个尚不存在的临时表来创建表并将其导入其中:

   INSERT INTO #TestFormatFiles
        SELECT *
          FROM  OPENROWSET(BULK  'C:\myTestFormatFiles-c.Dat',
          FORMATFILE='C:\myTestFormatFiles.Xml'     
          ) as t1 ;
    GO

测试告诉我不:无效的对象名称#TestFormatFiles

但是有没有办法不用从现有表创建临时表呢?

最佳答案

是的:而是使用 SELECT * INTO #TestFormatFiles FROM OPENROWSET...

(您几乎做到了:您不能 INSERT INTO 一个不存在的表。)

关于sql-server - 使用从具有 XML 批量格式文件的 .csv 文件插入 Openrowset 创建临时表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43359388/

相关文章:

sql-server - 轻松触发问题

java - 对单个元素而不是整个文档进行 XML 验证

java - Hibernate 中使用 ECache 的查询缓存的默认并发策略

php - 向时间戳添加值

c# - 在 winforms 中显示数据库中带有名称的图片?

sql-server - T-SQL 中是否有替代 "IN"语句的方法?

sql-server - SQL Server 2016 的版本和支持的功能

java - JAXB - 在编码为 XML 时,类包含可以展平吗?

c# - C# 中基于 XML 的项目文件的设计模式

java - 在android中删除SQLite数据库中的条目