我想要将一个大的csv文件导入到MySQL中,并且我使用DBeaver来实现(更快)。但是,当我完成从DBeaver到MySQL数据库的表导出时,数据/记录丢失。
丢失数据的原因是什么?我如何修复它?
这是在macOS Mojave上。我已经将csv文件导入到DBeaver (添加连接),并运行了count(*)代码-有48744条记录。
但是,当我将表导出到MySQL数据库并在MySQL中再次运行它时,只有9021条记录。
SQL代码:"=select count(*) from table name“
我预计MySQL读取的记录量与DBeaver相同,但它只读取不到总记录数的20%。
从DBeaver到MySQL数据库的表导出错误消息:
“数据加载过程中出错原因: SQL错误1406:数据截断:行1处的列'NAME_EDUCATION_TYPE‘的数据太长”
列类型都是VARCHAR(20)。我不知道在哪里更改数据类型才能容纳更多字符。
更新10/16:这里是创建表代码。csv列与内容匹配。
创建表TEST.application_test(
SK_ID_CURR VARCHAR(20),
NAME_CONTRACT_TYPE VARCHAR(20),
CODE_GENDER VARCHAR(20),
...
AMT_REQ_CREDIT_BUREAU_QRT VARCHAR(20),
AMT_REQ_CREDIT_BUREAU_YEAR VARCHAR(20))发布于 2021-10-08 12:36:38
在您的数据库上下文中使用DBeaver运行以下代码:
ALTER TABLE TEST.application_test
MODIFY NAME_EDUCATION_TYPE VARCHAR(50);您可以使用任何合适的值来更改50。这将增加列中可以容纳的最大字符串长度。检查.csv中此列中的最长值是多少。您也可以始终修剪文件本身中的值。
对于那些正在搜索为什么DBeaver会默默地减少从.csv文件导入的行数的人,您可以在它的日志中找到答案:
DBeaver Documentation - Log Files
通常的答案是类型问题(不能解析特定格式的日期,或者文本值有两个长度来适应数据库中允许的长度)。
发布于 2019-10-17 04:56:42
至少有一个mysql列没有达到所需的最小大小。我建议修改你的VARCHARS和CSV列的大小。可以在excel上创建一个公式,以帮助您发现CSV每列中更大尺寸的数据。要注意环境字符串字符(‘/),有时很难做到这一点。
https://stackoverflow.com/questions/58401479
复制相似问题