2012-05-03 90 views
1

嗨,我想在点。从csv文件中删除第一行,并根据它创建表

我试图上传CSVmysql atonce在windows中使用php。所以我正在使用查询

LOAD DATA INFILE 'c:/Data/mysql/transaction_upload.csv' 
INTO TABLE transaction_upload 
FIELDS TERMINATED BY ',' 
ENCLOSED BY '"' 
ESCAPED BY '\\' 
LINES TERMINATED BY '\r\n'; 

它将我的整个csv加载到表中。

的问题是:

  1. 的条件是表“transaction_upload”应该是已经存在。
  2. 它也上传包含标题的第一行csv。

我希望第一行将从CSV中删除,即标题不应该在数据库中具有条目,并且创建的表格会自动创建名称为CSV_file_name,并将列作为CSV第一行的列。

请不要回答在PHP中读取CSV的第一行,并创建表,因为删除第一行的问题仍然存在。

+0

它与PHP有什么关系? – benck

+0

@code断路器...你明白了吗! Iam寻找类似的东西..在此先感谢 – AWA

回答

3

IGNORE 1 LINES添加到LOAD DATA命令的末尾。

正如manual说:

IGNOREnumberLINES选项可以用来忽略在文件开始的线。例如,你可以使用IGNORE 1 LINES跳过初始包含标题行的列名:

LOAD DATA INFILE '/tmp/test.txt' INTO TABLE test IGNORE 1 LINES;

如果该表不存在,MySQL会产生一个错误。

+0

thankx它的工作表应该已经存在,你可以告诉我的方式来创建表根据第一行,但不是在csv中读取列的PHP和创建表。 –

+1

@CodeBreaker:问题是CSV没有包含足够的信息(例如列数据类型),MySQL无法正确创建表 - 您需要使用[CREATE TABLE]提供附加信息(http:// dev .mysql.com/doc/en/create-table.html)命令;如果为此使用其他语言(如PHP),有很多工具可以帮助您(如PHP的['fgetcsv()'](http://php.net/manual/en/function.fgetcsv.php)函数)。 (你*可以*通过MySQL的(类型不安全)[CSV存储引擎](http://dev.mysql.com/doc/en/csv-storage-engine.html),但我不推荐它) 。 – eggyal