私はいくつかの幸運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>
はこれを繰り返す必要があり、時々行うために必要なものか何かのアドホックタイプのですか?実際にSSISパッケージを作成しているSQL Serverのインポート/エクスポートウィザードを使用できますか? https://msdn.microsoft.com/en-us/library/ms141209(v=sql.105).aspx – nscheaffer
これは繰り返される必要があります。私はウィザードがそれを行うのを見たので、方法が必要であると仮定しました。 –