将带有 : 分隔符的文件导入 MySQL 数据库

Import file with : separators into MySQL database

我有多个 TXT 文件包含以下格式的列:

id:category:topic:date

他们都排成一排。即

1:category:topic:date

2:category:topic:date

3:category:topic:date

是否可以将此文件 import 放入我的 MySQL 数据库中?

使用 PHPMyAdmin

在导入选项卡上,您可以上传 CSV 文件。上传您的文件,select 格式 'CSV',并设置:

  • 列分隔::
  • 包含的列:(空)

与PHP

您可以编写一个 PHP 小程序来做到这一点。首先,读入文件:

$fh = fopen('the-file.txt', 'r');

现在,$fh 是读取-file.txt 的处理程序。现在我们可以使用 fgetcsv():

while (($data = fgetcsv($fh, 1000, ':', '')) !== false) {
    // insert data in database
}

$data是记录中所有数据的数组。


带有 PDO 和准备好的语句的示例:

// prepare the statement to insert a new record
$stmt = $pdo->prepare("INSERT INTO `some_table` (`id`, `category`, `topic`, `date`) VALUES (?, ?, ?, ?)");
// read the file
$fh = fopen('the-file.txt', 'r');
while (($data = fgetcsv($fh, 1000, ':', '')) !== false) {
    $stmt->execute($data);
}

这假设列名是 'id'、'category'、'topic' 和 'date'。

数字1000是行的最大长度。您可以将它设置为 0,表示没有最大长度,但这会稍微慢一些。有关详细信息,请参阅 docs