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:我曾尝试更新由分隔符终止,并更改\“后;问题仍然是数据未被放入正确的列等..,我不明白我已经错过了..
该错误可能由损坏的数据在你的数据库引起的,由查询从数据库中检索,或者在你的方式输出。你需要将它缩小到这些原因之一。
- 直接看看你正在选择的表格,我建议phpMyAdmin这个
- 直接点击将查询结果填入屏幕。一种非常粗糙但可行的方式可以是serialise它:
echo serialize($result);
- 如果您可以排除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进入空值,并在输入文件空字符串可以在数字领域
变成零点的也许正在发生的事情错了,怎么你插入数据,它是什么样子的提示数据库,你怎么读它回来了,你怎么输出它... – Greg 2008-11-05 13:27:42