我有一个 Crate.io 数据库,在 Windows Server 2012 下运行 CrateDB 版本 3.2.7。(我知道它不是最好的,它现在仅用于测试目的,不会是最终设置。)
我通过 BCP 命令将数据从 SQL Server 导出到 CSV 文件。
bcp DatabaseName.dbo.Snapshots out F:\Path\dbo_OldSnapshots.dat -S ServerName -U UserName -P Password -a65535 -c -C 65001 -t ,
然后我尝试使用“COPY FROM”命令将数据导入 CrateDb。
COPY dbo.snapshots FROM 'file:///F:/Path/dbo_OldSnapshots.dat';
该文件大约 11go 大。我知道它找到了文件,因为我可以在任务管理器中看到驱动器上的 I/O。
它运行了大约 13 分钟,然后说“0 行受影响”。我不知道为什么它不起作用,我没有收到任何错误。
************************************ 已编辑添加的附加信息 ************* ******************
好的,所以我发现您可以在 COPY 命令的末尾指定“返回摘要”子句。我用一个较小的文件对其进行了测试。
有了这个,我得到一个错误,说主键不能为 NULL。我知道在我提取的数据中它不是 NULL,所以我必须找出为什么它说我的主键是 NULL。
所以我将 BCP 分隔符更改为逗号,因为 CrateDB 的 CSV 文件必须用逗号分隔,并且我手动编辑文件以添加列标题,因为 CrateDB 要求提供标题。
我还在 Notepadd++ 中编辑了该文件以将其保存为 UTF-8 编码,以确保它是正确的编码。
但即便如此,我仍然收到错误说主键值不能为 NULL。