2017-02-08 9 views
0

一括挿入コマンドで、最初の行が何らかの形で列として.csvファイルから作成されるように指示できますか?SQL Serverでテーブルを作成し、csvからデータを挿入

BULK INSERT DataExtraction 
FROM '\\server03\c$\wwwroot\Filename.csv' 
WITH 
    (FIRSTROW = 2, 
    FIELDTERMINATOR = ',', --CSV field delimiter 
    ROWTERMINATOR = '\n', --Use to shift the control to next row 
    TABLOCK 
    ) 
+0

はこれを繰り返す必要があり、時々行うために必要なものか何かのアドホックタイプのですか?実際にSSISパッケージを作成しているSQL Serverのインポート/エクスポートウィザードを使用できますか? https://msdn.microsoft.com/en-us/library/ms141209(v=sql.105).aspx – nscheaffer

+0

これは繰り返される必要があります。私はウィザードがそれを行うのを見たので、方法が必要であると仮定しました。 –

答えて

1

私はいくつかの幸運TEMPテーブルにCSVの先頭1行を選択して、テーブルを構築するために、動的SQLを使用しなければなりませんでした。

--import the headers from the CSV. Make sure your XML is right 
SELECT TOP 1 * INTO #temp 
FROM OPENROWSET(BULK 'c:\temp\csv.csv', FORMATFILE= 'c:\temp\csv.xml') AS a 

--define and set your variables, one to each column of the CSV 
DECLARE @var1 VARCHAR(50) 
DECLARE @var2 VARCHAR(50) 

SET @var1 = (SELECT TOP 1 col0 FROM #temp) 
SET @var2 = (SELECT TOP 1 col1 FROM #temp) 

--build your dynamic query to create Table1. Table name can also be dynamic 
declare @sql varchar(MAX) 
SET @sql = 'create table Table1 (' + @var1 +' varchar(50), ' [email protected]+ ' varchar(50))' 

--EXECUTE your sql 
EXEC (@sql) 

そして、あなたのXMLが(智異Hubacekのおかげで)のように見えることがあります。

<?xml version="1.0"?> 
<BCPFORMAT xmlns="http://schemas.microsoft.com/sqlserver/2004/bulkload/format" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 
<RECORD> 
    <FIELD ID="1" xsi:type="CharTerm" TERMINATOR="," MAX_LENGTH="510" COLLATION="SQL_Latin1_General_CP1_CI_AS"/> 
    <FIELD ID="2" xsi:type="CharTerm" TERMINATOR="," MAX_LENGTH="510" COLLATION="SQL_Latin1_General_CP1_CI_AS"/> 
    <FIELD ID="3" xsi:type="CharTerm" TERMINATOR="\r\n" MAX_LENGTH="510" COLLATION="SQL_Latin1_General_CP1_CI_AS"/> 
</RECORD> 
<ROW> 
    <COLUMN SOURCE="1" NAME="col0" xsi:type="SQLNVARCHAR"/> 
    <COLUMN SOURCE="2" NAME="col1" xsi:type="SQLNVARCHAR"/> 
    <COLUMN SOURCE="3" NAME="col2" xsi:type="SQLNVARCHAR"/> 
</ROW> 
</BCPFORMAT> 
関連する問題