当前位置: 首页 > 知识库问答 >
问题:

Linux上的SQL Server>大容量导入错误

欧阳英彦
2023-03-14

下面是命令table exists,file exists on server:

BULK INSERT countries FROM '/import/file.tsv'
WITH (
  FIELDTERMINATOR = '\t'
);

谢谢你托马斯

共有1个答案

章兴发
2023-03-14

我在linux上的大容量插入遇到了很多麻烦,有效的路径名被拒绝了:

# sqlcmd -S localhost -d leak -U sa -Q "BULK INSERT leak FROM '/tmp/data.txt'"
Msg 12703, Level 16, State 1, Server mssql, Line 1
Referenced external data source "(null)" not found.

# ll /tmp/data.txt
-rw-r--r-- 1 root root 30M Feb 20 02:40 /tmp/data.txt

而建议的将斜杠替换为反斜杠和前置C:\的解决办法也不起作用:

# sqlcmd -S localhost -d leak -U sa -Q "BULK INSERT leak FROM 'C:\\tmp\\data.txt'"
Msg 12703, Level 16, State 1, Server mssql, Line 1
Referenced external data source "(null)" not found.

因此,我进行了一些调查,通过在守护进程上运行strace,我发现:

# strace -fp 3198 -e open
strace: Process 3198 attached with 175 threads
[pid  3202] open("/proc/self/status", O_RDONLY) = 170
[pid  3202] open("/proc/meminfo", O_RDONLY) = 170
[pid  3321] open("/", O_RDONLY|O_NONBLOCK|O_DIRECTORY|O_CLOEXEC) = 175
[pid  3321] open("/tmp/", O_RDONLY|O_NONBLOCK|O_DIRECTORY|O_CLOEXEC) = 175
[pid  3321] open("/tmp/data.txt", O_RDONLY) = 175
[pid  3321] open("/tmp/data.txt", O_RDONLY|O_DIRECT) = -1 EINVAL (Invalid argument)
# ll /data.txt
-rw-rw-rw- 1 root root 30M Feb 20 02:28 /data.txt

# ll /data.txt
-rw-rw-rw- 1 root root 30M Feb 20 02:28 /data.txt
# sqlcmd -S localhost -d leak -U sa -Q "BULK INSERT leak FROM '/data.txt'"
Msg 4860, Level 16, State 1, Server mssql, Line 1
Cannot bulk load. The file "/data.txt" does not exist or you don't have file access rights.
# sqlcmd -S localhost -d leak -U sa -Q "BULK INSERT leak FROM '/media/data.txt'"

(1000000 rows affected)
 类似资料:
  • 我正在使用大容量插入并得到以下错误: 注意:加载文件中的数据不超过配置的列长度 从'C:\temp\dataload\load_file.txt'大容量插入load_data(firstrow=1,fieldterminator='0x09',rowterminator='\n',MAXERRORS=0,ERRORFILE='C:\temp\dataload\load_file') Msg 486

  • 我有一个带有 INSERT 语句的代码块,其中应用了许多逻辑,几分钟后,由于任何其他插入错误(如“截断错误”等),它失败。因此,正如我在 catch 块中提到的,插入失败并引发错误,但我需要知道哪个特定 ID 导致该错误。有可能获得该ID吗?下面是我的示例代码块 在这个CATCH块中,如果插入失败,我们可以获得fieldA值以及ERROR_NUMBER()、ERROR_ MESSAGE()吗? 或

  • 我看了它的例子,但没有发现。我在linux Ubuntu(PopOs)上使用python3,sudo apt get安装python3 tk dit不工作 Traceback(最近的调用最后):文件"Test.py",第3行,在导入tkinterModuleNotFoundError: No模块命名'tkinter'

  • 我正在尝试通过copy命令将数据从.csv文件导入Cassandra 3.2.1。文件中只有299行14列。我得到错误: 无法导入 299 行:请求无效 - code=2200 [无效查询] 消息=“批处理太大” 我使用以下复制命令并尝试增加批大小: 我认为299行对卡桑德拉来说不算太多,还是我错了?

  • 问题内容: 我正在尝试在 Jupyter笔记本* 上导入 cv2 ,但出现此错误: * 我很沮丧,因为我现在已经花了几个小时来研究这个简单的问题。它适用于Pycharm,但不适用于Jupiter笔记本。我已经将cv2安装到Python2.7的站点程序包中,将Jupyter的内核配置为python2,浏览了文档,但是我仍然不明白我所缺少的内容吗? (我使用的是Windows 10,并且使用了Micr

  • 问题内容: 我正在开发一个LAMP在线商店,它将允许管理员为每个项目上传多个图像。 我担心的是-马上就会有20000个项目,大约意味着60000张图像。 问题: Linux上文件和/或目录的最大数量是多少? 处理这种情况的通常方法是什么(最佳实践)? 我的想法是根据每个项目的唯一ID为每个项目创建一个目录,但那时我在主 上载 目录中仍然有20000个目录,并且它将无限期地增长,因为不会删除旧项目。