【问题标题】:How to fix missing rows/data when exporting tables from DBeaver to MySQL database?将表从 DBeaver 导出到 MySQL 数据库时如何修复丢失的行/数据?
【发布时间】:2019-10-15 19:30:31
【问题描述】:

我想将一个大的 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] [22001]:数据截断:第 1 行“NAME_EDUCATION_TYPE”列的数据太长”

列类型都是VARCHAR(20)。我不知道在哪里更改数据类型以适应更多字符。

10 月 16 日更新: 这是创建表代码。 csv 列与内容匹配。

创建表测试.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))

【问题讨论】:

  • 看一下 MySQL (SHOW CREATE TABLE tablename) 上的表定义。并且,查看 CSV 文件的前几行。表中的列定义是否与 CSV 中的内容匹配?如果你要edit你的问题来展示这些东西,我们可能会更好地帮助你。
  • 您好,我刚刚更新了我的问题,以根据我对您提到的内容的理解来显示这些内容

标签: mysql csv dbeaver


【解决方案1】:

在您的数据库上下文中使用 DBeaver 运行以下代码:

ALTER TABLE TEST.application_test
MODIFY NAME_EDUCATION_TYPE VARCHAR(50);

您可以将 50 更改为任何合适的值。这将增加可能适合列的最大字符串长度。检查 .csv 中此列中最长的值是多少。您也可以随时修剪文件本身中的值。

对于那些正在寻找 DBeaver 为何默默地削减从 .csv 文件导入的行数的人,您可能会在其日志中找到答案:

DBeaver Documentation - Log Files

通常的答案是类型问题(无法解析特定格式的日期或文本值是两个长以适应数据库中允许的长度)。

【讨论】:

    【解决方案2】:

    至少有一个 mysql 列没有最小必要大小。我建议修改您的 VARCHARS 与 CSV 列的大小。可以在 excel 上创建一个公式,以帮助您发现 CSV 每一列中较大的数据。注意转义字符串字符('/),有时很难做到。

    【讨论】:

      猜你喜欢
      • 2022-10-17
      • 1970-01-01
      • 1970-01-01
      • 2014-04-08
      • 1970-01-01
      • 1970-01-01
      • 2017-09-03
      • 1970-01-01
      相关资源
      最近更新 更多