BULK INSERT一个xlsx文件

时间:2015-09-30 10:42:53

标签: sql excel sql-server-2008 bulkinsert

我一直在努力导入我的.xlsx文件一段时间,似乎无法弄清楚发生了什么。我按照我在其他SO帖子和其他教程中找到的所有步骤进行操作。

我现在有一个简单的.xlsx文件:

enter image description here

这是代码我现在运行以获取文件并将其放入临时表:

IF OBJECT_ID('tempdb..#Compare') IS NOT NULL
    DROP TABLE #Compare;

CREATE TABLE #Compare
(
    Name VARCHAR(MAX)
    ,Lastname VARCHAR(MAX)
);


BULK INSERT #Compare
        FROM 'C:\Users\Michael\Documents\Taquanta\TAQKANBAN - 44 - 3pm Compare\compare.xlsx'
            WITH
    (
                FIELDTERMINATOR = '\t',
                ROWTERMINATOR = '\n'
    )
GO

SELECT * FROM #Compare c

返回的结果不符合我的预期:(

结果:

enter image description here

请允许任何人让我知道我哪里出错了?

1 个答案:

答案 0 :(得分:0)

我已经多次使用PowerShell完成了这项工作。您可以调整以下内容。

$filename = "C:\Users\Michael\Documents\Taquanta\TAQKANBAN - 44 - 3pm Compare\compare.xlsx";
$ExcelConnStr = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source='$filename';Extended Properties='Excel 12.0 Xml;HDR=YES';"
$ExcelConn = New-Object System.Data.OleDb.OleDbConnection($ExcelConnStr);
$ExcelConn.Open();
$ExcelCommand = New-Object System.Data.OleDb.OleDbCommand("SELECT * FROM [Sheet1`$a5:ae]" ,$ExcelConn);

$adpt = New-Object System.Data.OleDb.OleDbDataAdapter;
$adpt.SelectCommand = $ExcelCommand;

$dt = New-Object System.Data.DataTable;
[void]$adpt.Fill($dt);


$SQLConnStr = "Server=XXXXX;Database=XXXXX;Trusted_Connection=True;";
$SQLBulkCopy = New-Object System.Data.SqlClient.SqlBulkCopy($SQLConnStr);
$SQLBulkCopy.DestinationTableName = "dbo.TableName"
$SQLBulkCopy.WriteToServer($dt);
$SQLBulkCopy.Close();