2017-04-12 21 views
2

Microsoft的技術頁說您可以執行以下操作以使用格式文件從.csv文件導入物理樣本表。我有這個工作。使用帶有XML Bulk格式文件的.csv文件中的Insert Openrowset創建臨時表

使用OPENROWSET批量行集提供

下面的示例使用INSERT ... SELECT * FROM OPENROWSET(BULK ...)從myTestFormatFiles-c.Dat數據文件批量導入數據 轉換爲AdventureWorks示例 數據庫中的 HumanResources.myTestFormatFiles表。本示例使用XML格式文件MyTestFormatFiles.Xml。 該示例在導入數據 文件之前刪除任何現有表格行。在SQL Server Management Studio中查詢編輯器,執行:

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

現在我可以用進口散裝OPENROWSET有沒有現有的臨時表創建表並導入它:

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

測試告訴我沒有:Invalid Object name #TestFormatFiles

但有沒有辦法必須從現有表創建臨時表?

+0

你知道你將提前還是會改變數據的結構? – RT72

+0

現在沒有時間去嘗試,但你有沒有試過正常的方式如何溫度。表格被創建,'select * into #tmp from ...' –

回答

1

是:改爲使用SELECT * INTO #TestFormatFiles FROM OPENROWSET...

(你幾乎擁有了:你就不能INSERT INTO表不存在。)