Php MySQL加载数据填充字段不匹配
我正在做一个新的项目,一个PHP的web应用程序,它需要用户输入一个潜在的大数据集。我的解决方案是让用户上传一个csv文件,然后使用Php MySQL加载数据填充字段不匹配,php,mysql,csv,Php,Mysql,Csv,我正在做一个新的项目,一个PHP的web应用程序,它需要用户输入一个潜在的大数据集。我的解决方案是让用户上传一个csv文件,然后使用LOAD DATA infle命令将其添加到我的mysql数据库中 我的测试csv: NUMBER,ADDRESS,COMMENT,SCOUTMASTER_NAME,SCOUTMASTER_EMAIL,COMMITTEE_NAME,COMMITTEE_EMAIL,DISTRICT 4,404 test st.,so cool,bob jones,bob@jones.
LOAD DATA infle
命令将其添加到我的mysql数据库中
我的测试csv:
NUMBER,ADDRESS,COMMENT,SCOUTMASTER_NAME,SCOUTMASTER_EMAIL,COMMITTEE_NAME,COMMITTEE_EMAIL,DISTRICT
4,404 test st.,so cool,bob jones,bob@jones.com,tim hanson,tim@hanson.net,western trails
5,404 test st.,so cool,bob jones,bob@jones.com,tim hanson,tim@hanson.net,western trails
6,404 test st.,so cool,bob jones,bob@jones.com,tim hanson,tim@hanson.net,western trails
7,404 test st.,so cool,bob jones,bob@jones.com,tim hanson,tim@hanson.net,western trails
部队
表上的描述
命令的结果:
+---------------------+---------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+---------------------+---------------+------+-----+---------+-------+
| NUMBER | int(11) | NO | PRI | 0 | |
| ADDRESS | varchar(255) | YES | | NULL | |
| COMMENT | varchar(2048) | YES | | NULL | |
| SCOUTMASTER_NAME | varchar(255) | YES | | NULL | |
| SCOUTMASTER_EMAIL | varchar(255) | YES | | NULL | |
| COMMITTEE_NAME | varchar(255) | YES | | NULL | |
| COMMITTEE_EMAIL | varchar(255) | YES | | NULL | |
| PRIMARY_ELENGOMAT | int(11) | YES | | NULL | |
| SECONDARY_ELENGOMAT | int(255) | YES | | NULL | |
| DISTRICT | varchar(255) | YES | | NULL | |
| ELECTION_DATE | date | YES | | NULL | |
| MEMBERS | int(11) | YES | | NULL | |
+---------------------+---------------+------+-----+---------+-------+
相关PHP:
$query = "LOAD DATA LOCAL INFILE '$uploadedFile'
INTO TABLE TROOPS
FIELDS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '\"'
LINES TERMINATED BY '\r\n'
IGNORE 1 LINES
(NUMBER,ADDRESS,COMMENT,SCOUTMASTER_NAME,
SCOUTMASTER_EMAIL,COMMITTEE_NAME,COMMITTEE_EMAIL,DISTRICT) ";
$result = $db->query($query);
SELECT
命令的输出(注意:这正是控制台输出,带有奇怪的空格):
错误和警告表均为空
我的问题是,“为了正确导入这些数据,我需要调整什么?”
很明显,这里发生了一些奇怪的事情,特别是非可调主键的数字“NULL”,以及在三的输入中,测试字符串“如此酷”是如何被截断的。我猜它是有行中断的东西,我已经尝试了\n,\r,\r\n,\n\r,用于< <代码>参数> ./p>终止的行。可能您的某些行以
\r
结尾,而不是\r\n
?实际上,有些行可能以\r\n
结尾。因此,DISTRICT
被设置为western trails\r
。好主意,关于如何检查文件中的转义字符,有什么提示吗?这个csv文件的原始来源是什么?我可以确认您的查询没有问题。我刚刚复制了一个具有精确数据类型的MySQL表,并在发布的csv上运行了精确的LOAD data infle
。数据渲染良好,没有奇怪的空值和空格。考虑使用PHP读取CSV并替换这些分隔符。
+--------+--------------+---------+------------------+-------------------+----------------+-----------------+-------------------+---------------------+-----------------+---------------+---------+
| NUMBER | ADDRESS | COMMENT | SCOUTMASTER_NAME | SCOUTMASTER_EMAIL | COMMITTEE_NAME | COMMITTEE_EMAIL | PRIMARY_ELENGOMAT | SECONDARY_ELENGOMAT | DISTRICT | ELECTION_DATE | MEMBERS |
+--------+--------------+---------+------------------+-------------------+----------------+-----------------+-------------------+---------------------+-----------------+---------------+---------+
| 0 | 404 test st. | so cool | bob jones | bob@jones.com | tim hanson | tim@hanson.net | NULL | NULL | western trails | NULL | NULL |
| NULL | NULL | cool | bob jones | bob@jones.com | tim hanson | tim@hanson.net | NULL | NULL | western trails
| NULL | NULL | cool | bob jones | bob@jones.com | tim hanson | tim@hanson.net | NULL | NULL | western trails
| NULL | NULL | cool | bob jones | bob@jones.com | tim hanson | tim@hanson.net | NULL | NULL | western trails
| 7 | 404 test st. | so cool | bob jones | bob@jones.com | tim hanson | tim@hanson.net | NULL | NULL | western trails | NULL | NULL |
+--------+--------------+---------+------------------+-------------------+----------------+-----------------+-------------------+---------------------+-----------------+---------------+---------+