批量插入记录,如果我理解正确,你将您巨大的XML转换为CSV -文件。
有了这个语法,你可以一气呵成插入一个CSV文件:
CREATE TABLE testTable(int1 INT,int2 INT, int3 INT);
--Assuming a file with the following content: 1, 2, 3; 4, 5, 6; 7, 8, 9;
BULK INSERT testTable FROM 'F:\testCSV.txt' WITH (FIELDTERMINATOR=',', ROWTERMINATOR=';');
SELECT * FROM testTable;
/*
Result
int1 int2 int3
1 2 3
4 5 6
7 8 9
*/
DROP TABLE testTable;
你可能会尽量避免CSV转换和直接进口这一点,但是这可能会试图加载XML中的一个件,60GB非常多......
CREATE TABLE testTable(int1 INT,int2 INT, int3 INT);
/*
Assuiming a file with the following content:
<data>
<row>
<a>1</a>
<b>2</b>
<c>3</c>
</row>
<row>
<a>4</a>
<b>5</b>
<c>6</c>
</row>
<row>
<a>7</a>
<b>8</b>
<c>9</c>
</row>
</data>
*/
INSERT INTO testTable
SELECT RowData.value('a[1]','int')
,RowData.value('b[1]','int')
,RowData.value('c[1]','int')
FROM
(
SELECT CAST(x.y AS XML) AS XmlData
FROM OPENROWSET(BULK 'F:\testXML.xml',SINGLE_CLOB) AS x(y)
) AS XmlData
CROSS APPLY XmlData.nodes('/data/row') AS x(RowData)
SELECT * FROM testTable;
/*
Result
int1 int2 int3
1 2 3
4 5 6
7 8 9
*/
DROP TABLE testTable;
最后但并非最不重要,你会发现解释了如何使用这里明确指定格式的文件,直接使用BULK INSERT
对XML文件:https://msdn.microsoft.com/en-us/library/ms191184.aspx
嗨托比亚斯,因为你是新来的,请允许我一个提示:请注意这样一个事实,即所有专业人士给予解答所以对于声望点都很渴望。请阅读[this:someone-answers](http://stackoverflow.com/help/someone-answers)。谢谢! – Shnugo
我看到你只是在......这个问题仍然是开放的吗?你需要进一步的帮助吗? – Shnugo