【问题标题】:Importing a very large tab delimited file into MySQL WITHOUT first creating a table将一个非常大的制表符分隔文件导入 MySQL 而不首先创建表
【发布时间】:2015-03-13 09:39:16
【问题描述】:

我有一个非常大的制表符分隔文件。它大约有 500 列宽,可能有一百万条记录长。它是文本、日期和数字的混合体。我实际上只对其中的几列感兴趣 - 其余的将被删除。

我想将它导入 MySQL,但这是一次性(可能是 2 次或 3 次)任务,我真的懒得为 LOAD DATA INFILE 命令创建一个空表。

实现这一目标最省力的方法是什么?可以使LOAD DATA INFILE 使用VARCHAR/TEXT 列或类似列即时创建表吗?

【问题讨论】:

    标签: mysql load-data-infile csv


    【解决方案1】:

    您必须创建一个表。但如果您只需要某些列,则可以选择它们。

    创建一个包含所需列的表。

    你可以像这样运行LOAD DATA

    LOAD DATA LOCAL INFILE 'import.csv' INTO TABLE yournewtable
    FIELDS TERMINATED BY '\t' LINES TERMINATED BY '\n'  
    (@col1,@col2) set Colum1=@col1,Column2=@col2;
    

    @col1,@col2 是 CSV 中的变量。 Colum1,Column2 代表您创建的表中的列。

    【讨论】:

    • 工作完美,谢谢。仅供参考,我需要第 2 列和第 229 列,在括号内输入以下内容:(@dummy,@col2,@dummy,@dummy,...*223,@dummy,@col229),然后在最后的语句中使用@col2@col229
    【解决方案2】:

    LOAD DATA INFILE http://dev.mysql.com/doc/refman/5.5/en/load-data.html 允许您指定仅导入某些列。

    【讨论】:

      猜你喜欢
      • 2011-01-12
      • 2013-06-04
      • 2015-07-18
      • 1970-01-01
      • 2013-05-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多