我需要做的是創建一個SQL Server腳本,以便將CSV文件中的記錄插入到表中。我知道這可以使用「BULK Insert」輕鬆完成。從Csv文件插入記錄到數據庫表(SQL Server)
BULK
INSERT TempTable
FROM 'C:\Records.csv'
WITH
(
FIELDTERMINATOR = ',',
ROWTERMINATOR = '\n'
)
GO
不幸的是,CSV文件包含不一致的限定符(「)某些字段可能或創建時CSV文件(手動地)如下面的樣品可能不具有此限定符:
10001,LeBron Quitter,CompanyA
10002,"Insane, Charlie",CompanyB
10003,Donald Punk,"CompanyC,CA"
如果我對上述CSV格式使用上述代碼,將會出現以下錯誤:
1.限定符將包含在表格中(例如:「瘋狂」)
2.由於逗號(,)是fieldterminator,因此第2條記錄將被視爲4個領域。
所以我不得不考慮別的事情,因爲我不想預處理CSV文件。歸結到這個解決方案 - 使用MICROSOFT.JET.OLEDB.4.0。
INSERT INTO MyRealTable
SELECT * FROM OPENROWSET('MICROSOFT.JET.OLEDB.4.0','Text;Database=C:\Temp\;','SELECT * FROM [Test.csv]')
注:
EXEC
sp_configure 'show advanced options', 1
Reconfigure
EXEC
sp_configure 'Ad Hoc Distributed Queries', 1
Reconfigure
EXEC
sp_configure 'OLE Automation Procedures', 1;
Reconfigure
EXEC
sp_configure 'Agent XPs', 1;
Reconfigure
問題:
1。是我的解決方案是正確的執行上面的代碼一定要具有訪問權/許可&執行以下之前?
2.是否還有其他更好的解決方案?
3.由於我使用MICROSOFT.JET.OLEDB.4解決方案,應該安裝/必備軟件?
我接受任何建議,批評,或任何東西,因爲我只是想了解更多...謝謝你提前非常非常開放...
這是一次性插入或東西,會經常發生? – RThomas 2011-05-14 05:49:47
只要數據庫管理員想要批量插入記錄,就會完成此操作。我不認爲你可以稱之爲「定期」......對於混亂......抱歉... – Vini 2011-05-14 05:54:44