簡體   English   中英

將多個 CSV 字段導入一個 MySQL 字段

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM