使用cqlsh无法将CSV导入Cassandra数据库及跨Windows服务器数据迁移咨询
问题解决:COPY命令导入日期格式错误与跨Windows服务器数据复制方法
一、COPY导入日期错误的解决方法
报错核心原因是CSV中的日期字符串2019-10-14 03:38:30AUS Eastern Daylight Time包含时区名称,而目标字段是long类型的日期(通常对应时间戳),COPY命令默认无法解析这种格式。可以通过以下几种方式解决:
1. 修改COPY命令指定日期格式
如果使用的数据库支持自定义日期格式参数,可在COPY命令中添加DATEFORMAT参数匹配CSV中的日期格式:
COPY loggtest.testdclog from 'G:\logtest\diagnosticlog_table.csv' with header=true DATEFORMAT 'yyyy-MM-dd HH:mm:ss"Eastern Daylight Time"';
注意:不同数据库的日期格式语法存在差异,需根据实际使用的数据库调整格式字符串。
2. 预处理CSV文件
直接修改CSV中的日期内容:
- 去掉时区字符串:将
2019-10-14 03:38:30AUS Eastern Daylight Time改为2019-10-14 03:38:30(无需时区信息时使用) - 转换为偏移量格式:改为
2019-10-14 03:38:30+10:00(AUS Eastern Daylight Time对应UTC+10)
3. 调整目标字段类型
若业务允许,可将目标表的日期字段类型改为带时区的时间戳类型(如TIMESTAMPTZ),这样COPY命令就能直接解析带时区名称的日期字符串。
二、两台Windows服务器之间复制数据的其他方法
除了导出CSV再导入的方式,还可以用以下几种高效方法:
1. 使用Robocopy命令
Windows自带的Robocopy是专业文件复制工具,支持批量复制、断点续传、权限保留等功能,适合大文件或大量文件复制:
robocopy \\源服务器IP\共享文件夹路径 \\目标服务器IP\共享文件夹路径 *.csv /E /Z /COPYALL
参数说明:
/E:复制所有子目录(包括空目录)/Z:支持断点续传/COPYALL:复制所有文件属性(权限、时间戳等)
2. PowerShell文件复制
用PowerShell的Copy-Item命令实现简单文件复制,适合小文件或脚本化操作:
Copy-Item -Path "\\源服务器\共享目录\diagnosticlog_table.csv" -Destination "\\目标服务器\共享目录\" -Force
3. 数据库级同步
如果两台服务器是同类型数据库,可直接用数据库自带同步功能:
- SQL Server:使用复制(Replication)或备份还原直接同步表数据
- PostgreSQL:用
pg_dump备份后在目标服务器执行pg_restore,或使用逻辑复制
4. 共享文件夹映射
在目标服务器上将源服务器的文件夹映射为本地驱动器,通过文件管理器直接复制:
- 右键“此电脑”→“映射网络驱动器”
- 输入源服务器共享路径(如
\\源服务器IP\logtest),完成映射后即可像操作本地文件一样复制数据
内容的提问来源于stack exchange,提问作者sandeep Kumar
相关产品推荐
相关产品推荐

