【发布时间】:2015-07-22 21:10:08
【问题描述】:
所以我更改了我的脚本以使用 LOAD DATA LOCAL INFILE,因为它对我来说应该更快。问题是我无法正确填充日期。
我现在有这个。 (我尝试了 50 种不同的方法)
if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file)) {
echo "The file ". basename( $_FILES["fileToUpload"]["name"]). " has been uploaded.";
echo $target_file;
// Get file for processing
$sql = "
LOAD DATA LOCAL INFILE \"C:/GIT/Production/csv/$target_file\"
INTO TABLE exp_subs
FIELDS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '\"'
LINES TERMINATED BY '\n'
(id,site_id,hash,member_id,card_id,coupon_id,plan_id,voucher_id,entry_id,recurring_interval,recurring_interval_count,amount,total_amount,total_cycles,status,renew,trial_starts_at,trial_ends_at,retry_count,retry_date,shipping_name,shipping_address1,shipping_address2,shipping_address3,shipping_city,shipping_state,shipping_zip,shipping_country,notes,test_mode,created_by,updated_by,canceled_by,next_billing_at,last_billed_at,@var1,@var2,@var3,@var4,@var5,@var6)
SET ended_at = STR_TO_DATE(@var1, '%Y-%m-%d %H:%i:%S'),
canceled_at = STR_TO_DATE(@var2, '%Y-%m-%d %H:%i:%S'),
expires_at = STR_TO_DATE(@var3, '%Y-%m-%d %H:%i:%S'),
created_at = STR_TO_DATE(@var4, '%Y-%m-%d %H:%i:%S'),
updated_at = STR_TO_DATE(@var5, '%Y-%m-%d %H:%i:%S'),
deleted_at = STR_TO_DATE(@var6, '%Y-%m-%d %H:%i:%S')
";
mysql_query($sql) or die(mysql_error());
} else {
echo "Sorry, there was an error uploading your file.";
}
这会将除日期之外的所有内容都包含在内。日期仍以“0000-00-00 00:00:00”的形式输入。如果我使用这样的更简单的版本,也会发生同样的事情:
if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file)) {
echo "The file ". basename( $_FILES["fileToUpload"]["name"]). " has been uploaded.";
echo $target_file;
// Get file for processing
$sql = "
LOAD DATA LOCAL INFILE \"C:/GIT/Production/csv/$target_file\"
INTO TABLE exp_subs
FIELDS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '\"'
LINES TERMINATED BY '\n'
";
mysql_query($sql) or die(mysql_error());
} else {
echo "Sorry, there was an error uploading your file.";
}
CSV 文件以这种格式保存日期:“4/21/2016 7:00”
如何将它们从上传的文件转换为我需要的方式?
【问题讨论】:
-
恐怕这对我没有帮助。也许我没有关注,我了解如何在 PHP 中更改日期。我不知道如何更改文件数据中的日期,因为它是直接从 CSV 拉到 SQL 语句中的,并且 CSV 文件不允许所需的格式。
-
您的解决方案是否有效?
-
那太好了。谢谢
-
@shehary 感谢您昨天与我一起解决这个问题。我将发布最终为我工作的内容。与我们在事物上的位置有些不同,但这会通过并允许删除所有空行。我将在此处发布最终答案供您查看。
标签: mysql date csv formatting sql-insert