[英]Import multiple CSV fields into one MySQL field
我有一張這樣的桌子
mytable(`id` int, 'number1' varchar(11), 'number2' varchar(1200))
我也有類似 cvs 的文件
111111111,222222222,333333333,44444444,,,
222222222,333333333,
111111111,555555555,666666666,
它們由“,”(或其他東西)分隔 csv 有 100 列。
我想將第二列到第 100 列合並到 mysql“number2”中,將第一列合並到 mysql“number1”中。
像這樣:
id number1 number 2
1 111111111 222222222,333333333,44444444
2 222222222 333333333
3 111111111 555555555,666666666
那么我可以使用 LOAD DATA INFILE 將文件加載到表中嗎? 我怎樣才能做到這一點..? 或者有其他方法?
謝謝。
這是一個創建一個新列的選項,它結合了第 2 列到第 100 列:
LOAD DATA INFILE 'input.csv'
INTO TABLE myTable
COLUMNS TERMINATED BY ','
IGNORE 1 LINES
(id, number1, number2, ..., number99)
SET newCol = CONCAT(NULLIF(number1, ''), NULLIF(number2, ''), ..., NULLIF(number99, ''));
然后,您可以從 MySQL 中刪除第 2 到 100 列:
ALTER TABLE myTable
DROP COLUMN number1,
DROP COLUMN number2,
...
DROP COLUMN number99
您可以使用函數file()
打開 cvs 文件;
使用函數explode(',', $each_line)
用,
, 分隔每一行,
我沒有清楚地理解你的需求,我認為簡單的代碼可能是這樣的:
$file_items = file('file.cvs');
foreach($file_items as $item) {
$item_arr = explode(',', $item);
// combine $item_arr[0]... $item_arr[99] ,you get $number1, $number2;
$sql_insert = "INSERT INTO mytable (number1, number2) VALUES(number1, $number2)";
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.