2
A
回答
1
我建議你通過ADODB連接使用ODBC/DSN連接到excel文件。 我發現這非常有效。
您首先創建一個ODBC數據源名稱:控制面板>管理工具>數據源(ODBC)。選擇「系統」選項卡並點擊「添加」。從出現的驅動程序列表中選擇「Microsoft Excel驅動程序」。爲您的DSN指定一個名稱'MYDB',然後導航xlS文件並雙擊進行選擇。
這可以通過編程方式完成,它只是我們創建了一個dll,像5年前那樣做,我仍然試圖找到它的源代碼。我會盡快發佈其代碼。
然後從你的程序,你可以連接到您的DSN,如下所示:
'declare the connection
Global MyConn As New ADODB.Connection
'open the connection
MyConn.Open "DSN=MYDB;pwd=;"
然後,您可以通過操作記錄集ADODB以正常方式連接。
我希望這有助於
1
你有bulk inserting權限?
1
您可以使用bcp實用程序。將Excel文件保存爲文本並將其插入。通常不需要批量插入權限即可。
1
This page有相反的代碼 - 從SQL Server中提取數據並將其插入到Excel中。您只需交換連接字符串即可。
像這樣:
private System.Data.OleDb.OleDbDataAdapter da ;
private System.Data.DataSet ds;
string sqlSelect="SELECT ProductId, ProductName, QuantityPerUnit, UnitPrice, UnitsInStock, GETDATE() as TimeExtracted from Products order by UnitPrice";
string sqlInsert="INSERT INTO Foo (ProductId, ProductName, QuantityPerUnit, UnitPrice, UnitsInStock, TimeExtracted) VALUES (@ProductId, @ProductName, @QuantityPerUnit, @UnitPrice, @UnitsInStock, @TimeExtracted)";
string ExtractedTableName= "ExtractedData";
private void ReadFromSource()
{
System.Console.WriteLine("Reading from Source...");
string ConnStringSource=
"Provider=Microsoft.Jet.OLEDB.4.0;" +
"Data Source=" + ExcelFilename + ";" +
"Extended Properties=\"Excel 8.0;HDR=yes;\""; // FIRSTROWHASNAMES=1;READONLY=false\"
using (var conn= new System.Data.OleDb.OleDbConnection(ConnStringSource))
{
da= new System.Data.OleDb.OleDbDataAdapter();
da.SelectCommand= new System.Data.OleDb.OleDbCommand(sqlSelect);
da.SelectCommand.Connection= conn;
// this tells the DA to mark all rows as newly inserted.
// upon calling da.Update() (later), all those rows will
// be inserted into the DB.
da.AcceptChangesDuringFill= false;
ds= new System.Data.DataSet();
da.Fill(ds, ExtractedTableName);
}
}
private void InsertIntoDestination()
{
System.Console.WriteLine("Inserting data into Destination...");
string ConnStringDest= "Provider=sqloledb;Data Source=(local);Initial Catalog=Northwind;Integrated Security=SSPI;";
using (var conn= new System.Data.OleDb.OleDbConnection(ConnStringDest))
{
System.Data.OleDb.OleDbCommand cmd= new System.Data.OleDb.OleDbCommand(sqlInsert);
cmd.Parameters.Add("@ProductId", System.Data.OleDb.OleDbType.Integer, 4, "ProductId");
cmd.Parameters.Add("@ProductName", System.Data.OleDb.OleDbType.VarWChar, 40, "ProductName");
cmd.Parameters.Add("@QuantityPerUnit", System.Data.OleDb.OleDbType.VarWChar, 20, "QuantityPerUnit");
cmd.Parameters.Add("@UnitPrice", System.Data.OleDb.OleDbType.Currency, 8, "UnitPrice");
cmd.Parameters.Add("@UnitsInStock", System.Data.OleDb.OleDbType.SmallInt, 2, "UnitsInStock");
cmd.Parameters.Add("@TimeExtracted", System.Data.OleDb.OleDbType.Date, 8, "TimeExtracted");
da.InsertCommand= cmd;
da.InsertCommand.Connection= conn;
da.Update(ds, ExtractedTableName);
// in the event you want to update a datasource via a different DataAdapter --
// for example you want to fill from a System.Data.SqlClient.DataAdapter and
// then Update via a System.Data.Oledb.OledbDataAdapter -- then you could define
// two distinct DataAdapters. Fill the DataSet with the first DA, then Update
// with the second DA.
}
}
相關問題
- 1. 將xls文件上傳到數據庫的最快方法
- 2. Java - 循環訪問數據庫記錄的有效方法
- 3. 從MYSQL數據庫中選擇子記錄的有效方法
- 4. 從JTable到數據庫插入記錄的不同方式或有效方法
- 5. 將現有的MySql數據庫記錄傳輸到SqLite
- 6. 將日曆記錄上傳到MySQL數據庫
- 7. 將大量記錄保存到XLS的最佳方法
- 8. 如何有效記錄數據庫?
- 9. 將現有數據上傳到新數據庫的最簡單方法
- 10. EntityManager persist()方法不會將記錄插入到數據庫中
- 11. 如何有效地將100s到1000s的動作記錄到數據庫中
- 12. mySQL:最有效的方法來更新大型數據庫中的記錄?
- 13. 在Unity3D中記錄時間序列數據的有效方法?
- 14. 從數據表中獲取唯一記錄的有效方法
- 15. 將1000多條記錄寫入數據庫表的最有效方式
- 16. 上傳大excel表格中記錄到我的數據庫
- 17. 在sqlite數據庫中插入多條記錄的有效方法
- 18. Java - 空指針將記錄傳遞到數據庫的異常
- 19. 將列表數據插入到C#中的mySQL數據庫的有效方法#
- 20. 嘗試使用類方法將文件上傳到數據庫
- 21. 定期將整個SQL數據庫表複製到另一個[歷史記錄]表的最有效方法
- 22. 將輸出記錄到數據庫中
- 23. 將記錄插入數據庫的通用方法
- 24. 無法添加記錄到數據庫
- 25. 有沒有更有效的方法來找到belongs_to記錄?
- 26. 將記錄從一個MySQL數據庫傳輸到另一個數據庫
- 27. mysql php上傳文件插入記錄到數據庫
- 28. 將.xls或.xlsx文件上傳到數據存儲時出錯
- 29. 刪除記錄時記錄/捕獲的有效方法
- 30. 在數據庫表上記錄數據
謝謝...你可以發佈一些代碼,或給我一個參考鏈接?我真的很感激。 – 2009-05-19 11:54:52