crate - Crate.io Copy From 0 行受影响
问题描述
我有一个 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。
解决方案
好的,所以我设法使它工作。如果您尝试将数据从 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 数据库中导入示例数据。
推荐阅读
- javascript - 如何用javascript中的键移动方块?
- java - 使用 ReplacementSpan 时 getmeasuredheight 返回 0 或相同
- swift - 如何在没有 Xcode 的情况下链接 CocoaPods 库(integrate_targets false)
- webpack - Babel 没有在通过 Webpack 加载器从 `node_modules` 导入时运行
- python - 将多列连接为一列,同时复制其他列的值
- r - 如何确定推文的出现顺序(生存分析?)?
- python - 如何在 Python 中将 3 个数组绘制为曲面图
- android - UncheckedIOException:java.nio.file.AccessDeniedException
- operating-system - 操作系统如何知道首先要启动哪些文件?
- ubuntu-18.04 - 为什么我的主机名和 /etc/hostname 在重新启动时会被重置?