好的,我刚刚阅读并尝试在最后一小时将csv文件从access导入到mysql中,但无论我尝试什么,我都无法正确地执行此操作。
我的桌子是这样的:
+-----------------+-------------
| 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:我曾尝试通过分隔符更新终止,并且在更改\“to之后;问题仍然是数据没有被放入正确的列等...,我不明白我错过了什么.. < / p>
答案 0 :(得分:5)
您的字段以“;”结尾不是“\”“。改变
FIELDS TERMINATED BY '\"'
到
FIELDS TERMINATED BY ';'
你也可以添加它:
OPTIONALLY ENCLOSED BY '"'
我认为你正在尝试使用TERMINATED BY子句。
答案 1 :(得分:0)
错误可能是由数据库中的数据损坏,查询从数据库中检索数据或输出方式引起的。你需要将其缩小到其中一个原因。
echo serialize($result);
一旦你确定 的原因是什么,就可以更容易确定原因是什么; - )
正如Ted Elliot所说:你的字段被“;”终止不是“\”“。改变FIELDS TERMINATED BY '\"'
到FIELDS TERMINATED BY ';'
此外,将数据导入mysql中的datetime字段的正确格式似乎是ISO格式:YYYY-MM-DD HH:mm:ss(例如2007-07-31 00:00:00)。
答案 2 :(得分:0)
通常情况下,您使用的“FIELDS TERMINATED BY”字符串实际上出现在其中一个字段中,通过将一个小程序写入.split()来检查文件中的每一行并计算字段。希望您可以控制输入文件的生成方式,并且可以使用极不可能的东西,例如“~~~~~”
另外,(不是直接相关,但你知道)你仍然必须做“\ N”在数据库中输入空值,输入文件中的空字符串可以在数字字段中变为零