2012-10-26 21 views
0

我有以下代碼中插入一個CSV文件到一個臨時表:SQL服務器:添加CSV可編程

  1. 這似乎

    USE [websitehere.com].[dbo] 
    GO 
    CREATE TABLE [websitehere.com].[dbo].[tmpTable] 
    (ID INT, 
        Caller_Number VARCHAR(100), 
        Caller_Name VARCHAR(100), 
        GroupBy VARCHAR(100), 
        Campaign_Name VARCHAR(100), 
        DateAndTime VARCHAR(100), 
        Duration VARCHAR(100), 
        Call_Status VARCHAR(100)) 
    GO; 
    
    BULK 
    INSERT tmpTable 
    FROM 'C:\Users\namehere\Documents\CallLog.csv' 
    WITH 
    (
        FIELDTERMINATOR = ',', 
        ROWTERMINATOR = '\n' 
    ) 
    GO 
    

    但是......不添加tmpTable 。它給了我一個錯誤

    消息102,級別15,狀態1,行1個
    附近有語法錯誤。「。

  2. 它不會增加INSERT命令說

    消息4834,級別16,狀態4,第8行
    您不必使用大容量加載語句的權限。

任何幫助將是巨大的,把這些2個錯誤的護理!

更新

db user secutirys

回答

0

啊發現我需要授予訪問權限才能使用它!

Right-click on your database table > 
properties > 
select Permissions from the left panel > 
click the blue link "View server permissions" > 
check "Grant" for "Administer bulk operations" > 
Ok > Ok > Done! 
1

USE [websitehere.com].[dbo] 

應該說

USE [websitehere.com] 

第二個錯誤應該由分配propper權限或角色memebership固定s爲您的用戶。您需要INSERT和ADMINISTER BULK OPERATIONS權限。也許更多,這取決於您的批量插入語句可能具有的其他選項。

您可能需要使用一些測試用戶帳戶來試試這個:

USE master; 
GO 
CREATE LOGIN bulkuser WITH PASSWORD = '[email protected]'; 
GRANT ADMINISTER BULK OPERATIONS to bulkuser; 

USE [websitehere.com] 
GO 
CREATE USER bulkuser FOR LOGIN bulkuser; 
EXEC sp_addrolemember 'db_datareader', 'bulkuser' 
GRANT INSERT ON [dbo].[tmpTable] TO bulkuser; 

請登錄爲「bulkuser」,並嘗試運行您的BULK INSERT語句。

+0

我的數據庫管理員。我如何檢查這些權限? – StealthRT

+0

如果您是數據庫的管理員,爲什麼不使用足夠強大的帳戶?無論如何,請轉到對象資源管理器中的用戶對象,並查找有問題的表和服務器上用戶的權限。 – Mithrandir

+0

查看我更新的OP,瞭解我的用戶安全屏幕截圖。 – StealthRT