mysql导入csv问题

问题描述:

好的,我刚刚阅读并试图在最后一小时导入一个csv文件从访问到mysql,但我无法让它做到这一点,无论我尝试什么。mysql导入csv问题

我的表像这样:

+-----------------+------------- 
| Field   | Type 
+-----------------+------------- 
| ARTICLE_NO  | varchar(20) 
| ARTICLE_NAME | varchar(100) 
| SUBTITLE  | varchar(20) 
| CURRENT_BID  | varchar(20) 
| START_PRICE  | varchar(20) 
| BID_COUNT  | varchar(20) 
| QUANT_TOTAL  | varchar(20) 
| QUANT_SOLD  | varchar(20) 
| STARTS   | datetime 
| ENDS   | datetime 
| ORIGIN_END  | datetime 
| SELLER_ID  | varchar(20) 
| BEST_BIDDER_ID | varchar(20) 
| FINISHED  | varchar(20) 
| WATCH   | varchar(20) 
| BUYITNOW_PRICE | varchar(20) 
| PIC_URL   | varchar(20) 
| PRIVATE_AUCTION | varchar(20) 
| AUCTION_TYPE | varchar(20) 
| INSERT_DATE  | datetime 
| UPDATE_DATE  | datetime 
| CAT_1_ID  | varchar(20) 
| CAT_2_ID  | varchar(20) 
| ARTICLE_DESC | varchar(20) 
| DESC_TEXTONLY | varchar(20) 
| COUNTRYCODE  | varchar(20) 
| LOCATION  | varchar(20) 
| CONDITIONS  | varchar(20) 
| REVISED   | varchar(20) 
| PAYPAL_ACCEPT | tinyint(4) 
| PRE_TERMINATED | varchar(20) 
| SHIPPING_TO  | varchar(20) 
| FEE_INSERTION | varchar(20) 
| FEE_FINAL  | varchar(20) 
| FEE_LISTING  | varchar(20) 
| PIC_XXL   | tinyint(4) 
| PIC_DIASHOW  | tinyint(4) 
| PIC_COUNT  | varchar(20) 
| ITEM_SITE_ID | varchar(20) 

这应该是罚款,我的数据,目前分号分隔,从我的CSV文件中的一行的例子因此是:

"110268889894";"ORIGINAL 2008 ED HARDY GÜRTEL* MYSTERY LOVE * M *BLACK";"";0,00 €;0,00 €;0;1;0;8.7.2008 17:18:37;5.11.2008 16:23:37;6.10.2008 17:23:37;29;0;0;0;125,00 €;"";0;2;6.10.2008 16:21:51;6.10.2008 14:19:08;80578;0;;0;77;"";0;0;1;0;-1;0,00 €;0,00 €;0,00 €;0;0;0;77 
"110293328957";"Orig. Ed Hardy Shirt - Tank Top - Gr. XS- OVP/NEU";"";25,05 €;0,00 €;7;1;0;27.9.2008 06:26:27;6.10.2008 18:26:21;6.10.2008 18:26:21;49;0;0;0;0,00 €;"";0;1;6.10.2008 16:21:56;6.10.2008 16:33:20;31058;0;;0;77;"";1;0;0;0;-1;0,00 €;0,00 €;0,00 €;0;0;0;77 

我我使用一个简单的PHP页面来输出表格数据,这是完全错误的。问题不在于PHP页面是一个简单的表格,只是文本显示完美。我想知道如果我选择了不正确的字段类型或者列表不匹配,但是我认为没有理由这样。会发生什么事情,因为数据试图显示为HTML?

我尽量保持这个问题尽可能具体,并且不要求人们像其他人一样为我做这件事,但我真的不知道问题出在哪里。

编辑:当试图通过php显示数据时,当页面是完全黑色的,并且一些单元格具有边界而其他单元格没有边界时,当尝试使用不同的分隔符时,其他字段与列不匹配。开始字段从未正确显示。

我从一个CSV文件加载文件使用此命令:

LOAD DATA LOCAL INFILE 'C:/Dokumente und Einstellungen/hom/Desktop/tblAuction.txt' INTO TABLE Auctions FIELDS TERMINATED BY '\"' LINES TERMINATED BY '\n'; 

它看起来在DB罚款,据我已经能够从开始现场告诉,除了,这是不目前的主要问题。

EDIT2:我已经序列化的结果,而这也正是是输出到屏幕:

i:0; 

我完全不知道这意味着什么。

edit3:我曾尝试更新由分隔符终止,并更改\“后;问题仍然​​是数据未被放入正确的列等..,我不明白我已经错过了..

+0

变成零点的也许正在发生的事情错了,怎么你插入数据,它是什么样子的提示数据库,你怎么读它回来了,你怎么输出它... – Greg 2008-11-05 13:27:42

该错误可能由损坏的数据在你的数据库引起的,由查询从数据库中检索,或者在你的方式输出。你需要将它缩小到这些原因之一。

  1. 直接看看你正在选择的表格,我建议phpMyAdmin这个
  2. 直接点击将查询结果填入屏幕。一种非常粗糙但可行的方式可以是serialise它: echo serialize($result);
  3. 如果您可以排除1和2作为错误的原因,则问题必须出现在查询的处理中。

一旦你已经确定其中的原因是,它变得更容易明确什么原因是;-)

特德埃利奥特提到:你的字段由终止“; “不是“\”“。更改FIELDS TERMINATED BY '\"'FIELDS TERMINATED BY ';'

此外,对于将数据导入日期时间字段在MySQL中正确的格式似乎是ISO格式:YYYY-MM-DD HH:MM:SS(例如2007-07-31 00:00 :00)。

你的字段由终止“;”不是 “\”,”更改

FIELDS TERMINATED BY '\"' 

FIELDS TERMINATED BY ';' 

你可以添加这个问题,以及:

OPTIONALLY ENCLOSED BY '"' 

我认为这是你试图用终止BY做条款。

它通常会发生,你正在使用的“终结田野”串什么实际发生内部的F一个请通过编写一个小程序来检查该文件.split()文件中的每一行并计算字段。希望你控制输入文件是如何生成的,并且可以使用一些不太可能的方式,比如“~~~~~”

另外,(不直接相关,但是你知道)你仍然需要做“\ N”在db进入空值,并在输入文件空字符串可以在数字领域

http://bugs.mysql.com/bug.php?id=23212