【问题标题】:Insert Whole CSV File in a MySql Table Row在 MySql 表行中插入整个 CSV 文件
【发布时间】:2015-02-13 13:10:38
【问题描述】:

我正在尝试将 CSV 文件的所有内容存储到表格行中。

表结构:

Field   Type   Comment
id      bigint(15) NOT NULL  Primary key for table
file_id bigint(15) NULL      Reference key from filemapper table
file_content longtext NULL    Content of the File
dataTime  timestamp NOT NULL

当我尝试使用 CSV 文件在此表中插入时出现问题,我收到错误“MySQL 服务器已消失”。

我没有尝试将 csv 文件字段拆分为 mysql 表中的列

谁能建议另一种方法来做到这一点而不会导致错误?

【问题讨论】:

标签: php mysql csv


【解决方案1】:
MySQL server has gone away 有愚蠢的原因和解决方案。 1.服务器超时并关闭连接。要修复,请检查 my.conf 配置文件中的“wait_timeout”mysql 变量是否足够大。 2.服务器丢了一个不正确或太大的包。如果 mysqld 收到一个太大或不正确的数据包,它会假定连接出现问题并关闭连接。要解决此问题,请在 my.conf 中增加最大数据包大小限制“max_allowed_pa​​cket”文件例如设置 max_allowed_pa​​cket = 128M 您可以转到此链接:http://stackoverflow.com/questions/12425287/mysql-server-has-gone-away-when-importing-large-sql-file

【讨论】:

    【解决方案2】:

    为了解决这个问题,你必须增加最大数据包大小限制

    MAX_ALLOWED_PACKET
    

    在 .cnf 文件中,例如:

    max_allowed_packet = 128M
    

    重启

    sudo /etc/init.d/mysql restart

    使用 LOAD DATA INFILE 你可以做到这一点。

    你需要设置字段TERMINATED BY

    FIELDS TERMINATED BY '\t' ENCLOSED BY '' ESCAPED BY '\\'
    LINES TERMINATED BY '\n' STARTING BY ''
    

    你的语法应该是这样的

    LOAD DATA INFILE ‘path/to/example.csv’ INTO TABLE example FIELDS TERMINATED BY ‘,’ LINES TERMINATED BY ‘\n’ IGNORE 1 LINES ;
    

    希望这对你有用。

    【讨论】:

    • 我不想将 csv 文件字段拆分为 mysql 表中的列
    猜你喜欢
    • 1970-01-01
    • 2018-11-27
    • 1970-01-01
    • 1970-01-01
    • 2015-03-30
    • 2016-09-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多