【问题标题】:load tab delimited data into mysql将制表符分隔的数据加载到mysql中
【发布时间】:2012-11-01 17:11:23
【问题描述】:

我需要将文本文件 tabDelimited/csv 作为表直接加载到 mysql 中。我正在关注页面(https://dev.mysql.com/doc/refman/5.5/en/loading-tables.html)做同样的事情。

testfile.txt

field1,field2
"abc",1
"def",2
"ghi",3

但是,我不断收到以下消息:

mysql> LOAD DATA INFILE 'testfile.txt' INTO TABLE myTable IGNORE 1 LINES;
ERROR 1146 (42S02): Table 'test.myTable' doesn't exist

我看到只有在创建表之后才能使用“加载”。所以这个错误是预期的。我有多个文件,我需要避免一一创建表。有没有其他方法可以做到这一点。

【问题讨论】:

    标签: mysql load csv


    【解决方案1】:

    您需要在向其中插入数据之前创建表。

    如果您有多个文件,请创建一次表,然后使用多个 LOAD DATA INFILE 调用附加数据。

    MySQL 无法从 CSV 文件自动确定数据的架构。创建表对于确定列和任何索引或键的数据类型至关重要。

    【讨论】:

    • 我有多个文件,我需要避免这一步。但是,我一直在寻找任何替代方式。
    • “避免这一步”是什么意思?您是否希望 MySQL 根据您尚未提供的模式神奇地为您创建表?
    • 听起来他正在寻找一种“Text to DDL”工具,就像 jsfiddle.com 使用的那样。
    • 从文本中自动定义DDL并不是一个很可靠的机制,jsfiddle.com这样做的时候经常会猜错。调试工具可以,但生产数据库完全不合适。
    • 好的,看来我需要编写代码来自动完成。谢谢
    【解决方案2】:

    听起来您还没有创建表。

    只是一个示例,您可以根据自己的需要进行调整。 如果不存在则创建表(field1 VARCHAR(3),field2 INTEGER);

    关于创建表的完整文档:http://dev.mysql.com/doc/refman/5.1/en/create-table.html

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-05-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-01
      • 2016-12-13
      • 2011-10-30
      相关资源
      最近更新 更多