简体   繁体   English

mysql 加载 csv 文件和附加列到表中

[英]mysql loading csv file plus additional columns into a table

I am reading articles and thread on how to load a csv file into a table, but I also need to add additional columns.我正在阅读有关如何将 csv 文件加载到表中的文章和线程,但我还需要添加其他列。 Is this possible?这可能吗?

Below is my table:下面是我的表:

+-----------+-------------+------+-----+---------+----------------+
| Field     | Type        | Null | Key | Default | Extra          |
+-----------+-------------+------+-----+---------+----------------+
| uid       | int(11)     | NO   | PRI | NULL    | auto_increment |
| lid       | int(11)     | YES  |     | NULL    |                |
| uDate     | date        | YES  |     | NULL    |                |
| cID       | int(11)     | YES  |     | NULL    |                |
| active    | int(1)      | YES  |     | 0       |                |
| user_ID   | varchar(32) | YES  |     | NULL    |                |

above are additional columns I need to pass in, below are all the columns in the CSV file上面是我需要传入的附加列,下面是 CSV 文件中的所有列

| fName     | varchar(32) | YES  |     | NULL    |                |
| lName     | varchar(32) | YES  |     | NULL    |                |
| lAddress1 | varchar(64) | YES  |     | NULL    |                |
| lAddress2 | varchar(16) | YES  |     | NULL    |                |
| lCity     | varchar(64) | YES  |     | NULL    |                |
| lState    | varchar(64) | YES  |     | NULL    |                |
| lZip      | varchar(10) | YES  |     | NULL    |                |
| lPhone    | varchar(15) | YES  |     | NULL    |                |
| lEmail    | varchar(96) | YES  |     | NULL    |                |
| field1    | varchar(32) | YES  |     | NULL    |                |
| field2    | varchar(64) | YES  |     | NULL    |                |
| field3    | varchar(64) | YES  |     | NULL    |                |
| regCode   | varchar(32) | YES  |     | NULL    |                |
+-----------+-------------+------+-----+---------+----------------+

And to load the file:并加载文件:

LOAD DATA LOCAL INFILE '/path/to/file/myfile.csv' INTO TABLE myTable
FIELDS TERMINATED BY ',' 
ENCLOSED BY '"' 
LINES TERMINATED BY '\r\n'
(fName,lName,lAddress1,lAddress2,lCity,lState,lZip,field1,field2,field3,regCode) ;

UPDATE更新

How can I also pass in lid,uDate,cID,active,user_ID ?我怎样才能传入lid,uDate,cID,active,user_ID

These fields are:这些字段是:

lid = listID 
cID = customerID 
active = defaults to inactive, but entrycan be later activated  
user_ID = initially null, but later updated with a properly assigned userID.

In my php script, they are already collected as $lid,$cID,0,$userID在我的 php 脚本中,它们已经被收集为$lid,$cID,0,$userID

You can add a SET clause to set additional columns other than the ones in the CSV.您可以添加SET子句来设置除 CSV 中的列之外的其他列。

$stmt = $conn->prepare("
    LOAD DATA LOCAL INFILE '/path/to/file/myfile.csv' INTO TABLE myTable
    FIELDS TERMINATED BY ',' 
    ENCLOSED BY '\"' 
    LINES TERMINATED BY '\r\n'
    (fName,lName,lAddress1,lAddress2,lCity,lState,lZip,field1,field2,field3,regCode)
    SET lid = ?, cID = ?, active = 0, user_id = ?");
$stmt->bind_param("iis", $lid, $cID, $userID);
$stmt->execute();

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM