Crate.io复制从0行受影响

时间:2019-05-10 17:50:51

标签: crate cratedb

我有一个Crate.io数据库,在Windows Server 2012下运行CrateDB版本3.2.7。(我知道它不是最好的,它仅用于测试目的,并且不是最终设置。)

我已经创建了表dbo.snapshots enter image description here

我通过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行受影响”。我不知道为什么它不起作用,没有任何错误。

enter image description here 知道我能做些什么来使它起作用吗?

*************************************编辑的附加信息********** ******************
好的,所以我发现您可以在COPY命令的末尾指定“ RETURN Summary”子句。我用一个较小的文件进行了测试。

这样,我得到一个错误,指出主键不能为NULL。我知道在提取的数据中它不是NULL,所以我将不得不找出为什么它说我的主键是NULL。

因此,我将BCP分隔符更改为逗号,因为CrateDB的CSV文件必须用逗号分隔,并且由于CrateDB要求输入标题,因此我手动编辑了该文件以添加列标题。

我也在Notepadd ++中编辑了文件以将其保存为UTF-8编码,以确保它是正确的编码。

尽管如此,我仍然收到错误消息,指出主键值一定不能为NULL。

enter image description here

1 个答案:

答案 0 :(得分:0)

好,所以我设法使它起作用。如果您尝试将数据从SQL或其他dbms导出到CrateDB,则需要检查以下内容:

-UTF-8中的文件编码

-逗号分隔的文件

-第一行必须是标题,所有列都要小心,名称区分大小写,因此,如果列在SQL Server中为“ MyColumn”,而在CrateDB中为“ mycolumn”,则在列中必须小写标头,否则CrateDb将无法正确找到它

-如果您有DateTime类型,则它必须在文件中的“”之间(例如:1,0,“ 2019-05-10T16:40:00”,0,0)

-如果您有DateTime类型,请注意,您需要在日期和时间部分之间使用T。所以是“ 2019-05-10T16:40:00”而不是“ 2019-05-10 16:40:00”

进行所有检查后,我便能够在CrateDB数据库中导入示例数据。