2013-02-14 108 views
0

我正在嘗試將CS​​V導入到SQL中。 CSV是非常大的4克,所以這真的是查詢數據的唯一選擇,我相信。CREATE TABLE給出錯誤4145和102

我已經到了創建新數據庫的地步,現在正在嘗試創建將保存信息的表。

我已經運行以下命令:

CREATE TABLE Provider_NPI 
(NPI INT, 
Entity Type Code INT, 
Replacement NPI INT, 
Employer Identification Number (EIN) INT, 

的INT後,它繼續了超過300個加標題,但有一個`味精4145,級別15,狀態1,行上三個不同的人錯誤X'錯誤。我列出了出來

Error: 
Msg 102, Level 15, State 1, Line 5 
Incorrect syntax near 'Code'. 

對於此行:Replacement NPI INT,

高於此線是Entity Type Code INT,

Error: 
Msg 4145, Level 15, State 1, Line 29 
An expression of non-boolean type specified in a context where a condition is expected, near 'U'. 

這條線:Provider Business Mailing Address Telephone Number VARCHAR(75),

Error: 
Provider Business Practice Location Address Telephone Number VARCHAR(75), 

此行:Provider Business Practice Location Address Telephone Number VARCHAR(75),

任何人都可以幫我確定什麼是錯的?我相信這可能與一些標題名稱有關?

+3

你被允許在這樣的列名中有空格嗎?在這種情況下,標識符周圍是否需要括號? – bernie 2013-02-14 20:58:00

+0

我是一個SQL的總noob,所以我猜你的意思是.. [實體類型代碼] INT, – jjones312 2013-02-14 21:04:05

+0

是的,這正是我的意思。 – bernie 2013-02-14 21:06:48

回答

4

列名中可以有空格(和parens),但只有當您將它們放在括號中時。

CREATE TABLE Provider_NPI 
(NPI INT, 
[Entity Type Code] INT, 
[Replacement NPI] INT, 
[Employer Identification Number (EIN)] INT) 
+0

安思引用(使用'「')應該是首選甚至更好:。使用,不需要引用列名 – 2013-02-14 21:56:55

+0

有時候很不錯的‘格式化’的名字我個人喜歡用[]裏對這種類型。的,因爲這是在SQL Server中一個相當標準語法的事情。[]用於任何非文字基本上秒。 – 2013-02-14 22:01:58

0

伯尼幫着解決了這個人,但我碰到的與CSV文件中的其他問題,並已在度假,所以我回來目前正在努力解決。

我已經成功創建了數據庫和表,其中包含具有正確數據類型和長度集的所有列標題。即varchar(50)或INT ..我現在遇到的問題是從CSV文件導入數據。它給我的味精4868錯誤,我指出的問題與批量插入我試圖使用和雙引號圍繞所有的數據。

正如我所說,有300多列標題和100,000 +行。所有數據,數字,字符串和日期都用雙引號「」括起來。它看起來像一個格式文件是需要的,我正在創建過程中,但遇到的問題與指令在http://support.microsoft.com/default.aspx?scid=kb;EN-US;132463

數據看起來像「1231231」,「名稱1」,「地址」,「郵編「,」「555-555-5555」,「」,「」,「第2個地址」,「傳真」,「」,「」

數據繼續,有些字段的數據被包圍,引號。該文章指出使用虛擬行刪除引號,我可以但它似乎需要大量手動編輯格式文件創建後。

有沒有辦法創建格式文件,這將允許我使用它來刪除導入數據時的雙引號?我不知所措,真的很想解決這個問題。

+0

我應該開始一個新的職位,如果是的話對不起張貼一個答案.. – jjones312 2013-02-23 03:13:53

+0

是的,我會創建一個新帖子 – 2013-02-23 14:33:31