首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >大规模CSV到MySQL进口问题

问大规模CSV到MySQL进口问题
EN

Stack Overflow用户
提问于 2011-05-04 18:07:43
回答 3查看 1.5K关注 0票数 0

问题:从我的仓库接收到的CSV数据有超过2个million+编号,我需要将其导入多个column表的单个列中。我需要弄清楚如何将CSV文件导入MySQL,但是还有一些棘手的问题要克服。经过一番研究,我还没有找到解决办法.

列可以按如下方式排列:(数据库中尚不存在此数据)

  • id:自动递增从分配给另一个表ID值的CSV
  • somethingID:获得的value
  • serialCode:值

ID : serialCode x somethingID

2 million+序列号以下面的示例格式提供给我。每个数字都是一个单独的serialCode,用逗号分隔,一行中有4个serialCodes。

代码语言:javascript
复制
7121316,8216697,5146909,5191409,
8125250,6217542,5144896,8198066,
3125654,9217139,2146880,1192013

我需要做的是将这些串行代码插入到MySQL数据库中,特别是只插入serialCode列中。ID将自动递增,somethingID将在稍后的日期分配。

EN

回答 3

Stack Overflow用户

发布于 2011-05-04 18:09:55

MySQL的LOAD DATA INFILE命令将是您的朋友:http://dev.mysql.com/doc/refman/5.5/en/load-data.html

首先创建表,然后我认为下面的命令应该可以工作:

代码语言:javascript
复制
LOAD DATA INFILE "/path/to/file" INTO TABLE myTable LINES TERMINATED BY "," (serialCode) SET ID=NULL;
票数 3
EN

Stack Overflow用户

发布于 2011-05-04 18:23:31

为此您可以使用LOAD DATA INFILE。棘手的部分是,您的行结束符有时是逗号,但有时它是逗号和行中断。

解决这个问题的最简单方法是将值加载到用户变量中,然后在表中设置实际列变量时从用户变量中删除行中断。

像这样的东西应该对你有用:

代码语言:javascript
复制
LOAD DATA INFILE '/tmp/your_file.csv'
INTO TABLE your_table
LINES TERMINATED BY ','
(@serialCode)
SET id = NULL,
   serialCode = REPLACE(@serialCode,'\n','');
票数 2
EN

Stack Overflow用户

发布于 2012-08-07 07:15:13

如果mysql工具因任何原因而失败(内存限制、编码问题、无效csv),则始终可以选择用首选编程语言编写脚本来解析csv并将其存储到DB中。大多数编程语言都具有csv解析能力。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5887906

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档