SQL Server:添加CSV可编程

时间:2012-10-26 14:29:18

标签: sql sql-server sql-server-2008

我有以下代码将CSV文件插入临时表:

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

但是...

  1. 似乎没有添加tmpTable。它给了我一个错误

      

    Msg 102,Level 15,State 1,Line 1
      '。'。

    附近的语法不正确
  2. 它不会添加说明

    的插入命令
      

    Msg 4834,Level 16,State 4,Line 8
      您无权使用批量加载语句。

  3. 任何帮助都可以很好地处理这两个错误!

    更新

    db user secutirys

2 个答案:

答案 0 :(得分:1)

该行

USE [websitehere.com].[dbo] 

应该说

USE [websitehere.com]

第二个错误应该通过为您的用户分配propper权限或角色成员来解决。您需要INSERT和ADMINISTER BULK OPERATIONS权限。可能更多,具体取决于您的批量插入语句可能具有的其他选项。

您可能希望尝试使用某个测试用户帐户:

USE master;
GO
CREATE LOGIN bulkuser WITH PASSWORD = 'P@ssw0rd';
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语句。

答案 1 :(得分: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!