2010-09-07 80 views
4

我想澄清如何從.csv導入數據到帶有3列的表格中(請參閱下面的CR Ranking.csv)。我查詢:通過Openrowset和Microsoft從csv導入(到不同列中).ACE.OLEDB.12.0

select * FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0','Text;Database=C:\Work\;HDR=Yes;', 
'SELECT * FROM [CR Ranking.csv]'); 

輸出結果爲一個 coulmn:

header: Category;INfo;Rank 
row 1: Category 1;Info;1 
row 2: Category 2;INfo2;2 
row 3: Category 3;INfo3;3 

是否有可能通過OPENROWSET從.CSV數據分成列? 我認爲我錯過了Openrowset params的一些東西,或許這很容易?

是的:我使用Office 2010的64位ODBC驅動程序獲取.csv,.txt等的驅動程序... 這就是爲什麼提供者是:'Microsoft.ACE.OLEDB.12.0',這就是爲什麼這個連接如字符串似乎不工作:

Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\';Extended Properties="text; HDR=NO; FMT=Delimited"; 

CR Ranking.csv:

Category;INfo;Rank 
Category 1;Info;1 
Category 2;INfo2;2 
Category 3;Info3;3 

UPD 1: 是否有可能做不格式文件?

UPD 2:我通過格式文件製作 - 這很容易。抱歉打擾了。

+0

試圖將簡單的Jet csv連接字符串轉換爲ACE驅動程序。這是第一個從64位ACE訪問csv文件的實例,我瀏覽了大約75個不同的網頁後看到了這個文件。謝謝! 顯然,我的主要缺陷是在數據庫屬性周圍使用了雙引號(如果引用,則不起作用) – DarrenMB 2012-08-02 14:23:24

+0

使用列定義創建schema.ini文件。這是一個鏈接http://msdn.microsoft.com/en-us/library/ms974559.aspx – 2013-05-13 23:11:26

回答

2

我知道這是一箇舊帖子,但我想我會反應。

我沒有試過這個使用ACE,但我發現了幾個職位,說下面的東西會工作。注意自定義分隔(;)設置...

select top 50 * FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0','Text;Database=c:\temp\captell;HDR=Yes;FORMAT=Delimited(;)', 'SELECT * FROM [DASDGIGS0013046591395.TXT]') 
+0

確認這適用於Excel 2010 x64和SQL Server Express 2008 R2。 ('Microsoft.ACE.OLEDB.12.0','Text; HDR = YES; FMT = Delimited; Database = C:\ Data \;'','SELECT * FROM [table.csv]')SELECT * FROM OPENROWSET – fomoz 2012-03-02 21:27:23

+0

'FORMAT = Delimited(;)'不適用於從分號分隔的文件中讀取,儘管這將從逗號分隔的文件中讀取 – Rachel 2012-11-26 18:13:14

+0

Goodnight我一直在摔跤一段時間! [[filename.txt]中的[[「括號] - 我爲鏈接服務器類型的錯誤獲取了許多OLE DB提供程序」Microsoft.ACE.OLEDB.12.0「。+1,謝謝! – 2014-12-05 21:58:37