SQL Server 批量插入 - Linux/RHEL 错误

问题描述 投票:0回答:2

我正在针对驻留在 Linux / RHEL VM 中的 SQL Server 2019 运行批量插入查询(通过存储过程)。 执行后,我收到此错误:

消息 4860,级别 16,状态 1,过程 dbo.Import_Store,第 25 行 [批量开始第14行]

无法批量加载。文件“/home/user1/FileStorage/Store1.csv”确实 不存在或者您没有文件访问权限。

此错误消息不正确 - 即该文件物理存在于虚拟机上的指定路径并具有正确的权限(每个人都获得完全权限!)。

任何见解都将受到高度赞赏。 谢谢。

BULK INSERT dbo.Store
    FROM '/home/user1/FileStorage/Store1.csv'
    WITH
    (
        FORMAT = 'CSV', FIRSTROW = 2, FIELDTERMINATOR = ',', ROWTERMINATOR = '\n'
    );

仅供参考 - 我尝试了很多选项,例如使用 C:\ 或 C:/ 而不是 /home,但到目前为止没有任何效果。

sql-server linux bulkinsert
2个回答
0
投票

感谢 Larnu 的上述评论。 这让我做了一些事情来解决我的问题。 这是我为有同样想法的人解决这个问题的方法。

我基本上在 Linux VM 的根目录下创建了一个全新的共享文件夹。 然后创建一个新的用户组并授予其对共享文件夹的完全访问权限。 然后我将用户“mssql”添加到该组中。 现在我的 SQL Server 可以毫无错误地访问该位置!

sudo mkdir -p /SharedFolder

sudo groupadd SharedUsers

sudo chgrp -R SharedUsers /SharedFolder
sudo chmod -R 2775 /SharedFolder

sudo usermod -a -G SharedUsers mssql

0
投票

该文件必须位于 SQL Server 可以访问的目录中。在 Linux 上,这通常意味着确保文件放置在 /var/opt/mssql/data 等目录中或确保设置适当的权限。

© www.soinside.com 2019 - 2024. All rights reserved.