MySQL工作台未从csv导入所有行

mftmpeh8  于 2023-01-16  发布在  Mysql
关注(0)|答案(5)|浏览(164)

我正在尝试将CSV文件导入MySql中的新表。该文件有100万行,但MySql仅导入847行。
1.我试着保存CSV文件并导入各种格式,utf-8,windows-1205等。

  1. CSV文件有一个INDEX列,其中包含可用作主键的序列号。
    1.没有无效字符,如逗号。
    1.我复制了CSV文件,删除了前847行,再次导入,它导入了接下来的26行,这说明数据没有问题,它本来可以导入的。
    为什么MySql Workbench不导入所有百万行?

xdyibdwo

xdyibdwo1#

更新:
我尝试用MSSQL导入(使用SSMS),这不仅给了我一个错误,而且告诉了我问题所在!我没有为char字段分配足够的空间,因为一些值有很长的文本字符串。我在SSMS中所做的就是将其更改为VARCHAR(max)和SSMS导入了所有百万行。这可能是MySql的解决方案,但由于MySQL Workbench没有告诉我确切的问题是什么,我已经卸载了它,并将继续与SSMS和MSSQL。

fnx2tebb

fnx2tebb2#

不要使用PhpMyAdmin或MySQL Workbench,我建议你使用命令行导入csv到MySQL,特别是如果它是一个大文件。它允许你从文本文件读取数据或导入数据到数据库非常快,读这个。
使用此命令:

LOAD DATA LOCAL INFILE '/path/to/file.csv'
INTO TABLE table_name
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\r\n';
IGNORE 1 ROWS;
  • 如果文件位于本地机器,则添加LOCAL。参考:link.
  • table_name更改为目标表名。
  • FIELDS TERMINATED BY默认情况下,CSV使用逗号标识单个数据值。
  • ENCLOSED BY表示双引号" "环绕值。
  • LINES TERMINATED BY指定换行符。
  • IGNORE 1 ROWS这个命令告诉MySQL跳过第一行。如果CSV包含列标题,我们想忽略它导入到我们的表中,我们想使用这个命令。

有关更多详细信息,请查看manual

eh57zj3b

eh57zj3b3#

如果任何列的数据类型为double/float并且有空单元格,请用NULL或NA替换它们。尝试导入CSV。这对我很有效。

ee7vknir

ee7vknir4#

不要使用命令行,它需要设置环境参数,以允许您从本地csv文件导入。
相反,使用导入向导对我来说要容易得多。

但是,我只导入前100行。
我通过选择latin 1而不是默认的utf-8来解决这个问题
https://bugs.mysql.com/bug.php?id=89044

yxyvkwin

yxyvkwin5#

不要使用“导入向导”,因为它不能正常工作。最好将数据库备份为SQL格式,然后完整导入。使用主菜单-〉服务器-〉数据导入
https://www.youtube.com/watch?v=91hRSphTzdw

相关问题