EXEC master..xp_cmdshell
'bcp "SELECT * FROM fsebss.dbo.Resource_GoodsType" queryout "C:\temp1.xls" -c -t, -T -S"SERVER_NAME"';
參數說明:
queryout:查詢結果導出(可寫完整 SELECT)。-c:字元模式(預設 tab 分隔,這裡用 -t, 指定逗號)。-T:信任連線(Windows 驗證),或用 -U sa -P pwd。-S:伺服器名稱。Ad Hoc Distributed Queries:EXEC sp_configure 'show advanced options', 1; RECONFIGURE;
EXEC sp_configure 'Ad Hoc Distributed Queries', 1; RECONFIGURE;
INSERT INTO dbo.VPMN_BaseInforList_ML (BI_BaseShopNo, BIL_BaseShopListNo, BIL_Name, BIL_Jobs, BIL_Tel)
SELECT
LEFT(成員編號, 11) AS BI_BaseShopNo,
LEFT(成員編號, 11) + RIGHT(成員編號, 3) AS BIL_BaseShopListNo,
姓名,
職位,
CONVERT(VARCHAR(50), 手機號碼, 120)
FROM OPENDATASOURCE('Microsoft.ACE.OLEDB.12.0',
'Data Source="C:\pp.xlsx";Extended Properties="Excel 12.0 Xml;HDR=YES"')...[Sheet1$]
WHERE 姓名 IS NOT NULL;
INSERT INTO OPENDATASOURCE('Microsoft.ACE.OLEDB.12.0',
'Data Source="C:\export.xlsx";Extended Properties="Excel 12.0 Xml;HDR=YES"')...[Sheet1$]
SELECT ProductID, ProductName, UnitPrice FROM dbo.Products;
注意:目標 Excel 檔案與工作表必須預先存在,且欄位順序、資料型別需相符。
| 面向 | BCP | OPENDATASOURCE |
|---|---|---|
| 方向 | 僅匯出 | 雙向 |
| 效能 | 極高(大量資料首選) | 中等 |
| 格式 | CSV/文字 | 真正 .xls/.xlsx |
| 需求 | xp_cmdshell 啟用、檔案系統存取 | ACE Provider、Ad Hoc Distributed Queries |
| 安全性 | 需 sysadmin 權限 | 需控制伺服器存取 Excel 路徑 |
pandas / EPPlus / ClosedXML 彈性處理複雜格式。| 錯誤 | 原因 | 解決 |
|---|---|---|
| The OLE DB provider "Microsoft.ACE.OLEDB.12.0" has not been registered | 未安裝 ACE Provider 或位元數不符 | 下載安裝對應版本 AccessDatabaseEngine.exe |
| Cannot create an instance of OLE DB provider | Ad Hoc Distributed Queries 未啟用 | 執行 sp_configure 啟用 |
| External table is not in the expected format | Excel 版本與 Extended Properties 不符 | .xls 用 "Excel 8.0",.xlsx 用 "Excel 12.0 Xml" |