带SQL Server的Amazon RDS不允许从CSV源批量插入

chr*_*ris 5 sql sql-server csv import rds

我尝试了两种方法,但都失败了...

BULK INSERT TEMPUSERIMPORT1357081926 
FROM 'C:\uploads\19E0E1.csv' 
WITH (FIELDTERMINATOR = ',',ROWTERMINATOR = '\n')
Run Code Online (Sandbox Code Playgroud)

您无权使用批量加载语句。

但是您无法通过Amazon RDS启用该SQL角色?

因此,我尝试...使用openrowset,但是它需要启用AdHoc查询,而我没有权限进行此操作!

小智 5

我知道这个问题确实很老,但这是我搜索批量插入 aws sql server rds 实例时出现的第一个问题。事情已经发生了变化,您现在可以在将 RDS 实例与 S3 集成后执行此操作。我在这个问题上更详细地回答了这个问题。但总体要点是,您使用正确的角色设置实例,将文件放在 S3 上,然后您可以使用以下命令将文件复制到 RDS:

exec msdb.dbo.rds_download_from_s3
        @s3_arn_of_file='arn:aws:s3:::bucket_name/bulk_data.csv',
        @rds_file_path='D:\S3\seed_data\data.csv',
        @overwrite_file=1;
Run Code Online (Sandbox Code Playgroud)

然后BULK INSERT将工作:

FROM 'D:\S3\seed_data\data.csv'
WITH
(
    FIRSTROW = 2,
    FIELDTERMINATOR = ',',
    ROWTERMINATOR = '\n'
)
Run Code Online (Sandbox Code Playgroud)

AWS 文档


Pat*_*per 3

您可以通过以下方式启用即席分布式查询:前往 Amazon 管理控制台,导航到 RDS 菜单,然后创建一个将即席分布式查询设置为 1 的数据库参数组,然后将此参数组附加到您的数据库实例。

进行这些更改后,请不要忘记重新启动数据库。

以下是我的信息来源:

http://blogs.lessthandot.com/index.php/datamgmt/dbadmin/turning-on-optimize-for-ad/

希望这对您有帮助。

  • 这是很好的信息,我关注了。但 OPENROWSET 仍然抛出此错误:您无权使用批量加载语句。所以我不确定这个解决方案是否适用于任何人。 (4认同)