Преобразование текстового файла в CSV или сохранение каждого значения в MySQL?

SampNum            Acc_X              Acc_Y              Acc_Z
1                  0.89304            0.00366            -0.247416
2                   0.89304             0.00366          -0.247416
3                   0.887184            0.008052            -0.240096

У меня есть файл журнала, похожий на этот, и мне нужно преобразовать его в файл csv или просто выбрать каждое поле и сохранить его в таблицу mysql с именем столбца SampNum и т. Д. Вместе с соответствующими значениями.

Как я могу сделать это с php?

0

Решение

ПОЖАЛУЙСТА:

  • Не используйте устаревший ext / mysql, когда вы можете использовать ext / mysqli или PDO.
  • Не читайте весь CSV-файл в переменную PHP. Что происходит, когда файл 500 МБ?
  • Не пишите пользовательский код PHP для анализа данных CSV, когда вы можете использовать встроенную функцию fgetcsv ().
  • Не создавайте новый оператор SQL для каждой строки в данных, если вы можете использовать подготовленные операторы.
  • Не интерполируйте данные из внешнего файла в операторы SQL. Это может привести к уязвимости SQL-инъекций, так же как и при интерполяции ненадежного пользовательского ввода.
  • Не анализируйте и не вставляйте данные csv построчно, когда вы можете использовать команду MySQL LOAD DATA INFILE. Это в 20 раз быстрее, чем вставка строка за строкой.

Вот более простое решение:

<?php
$databasehost = "localhost";
$databasename = "test";
$databasetable = "sample";
$databaseusername="test";
$databasepassword = "";
$fieldseparator = ",";
$lineseparator = "\n";
$csvfile = "filename.csv";

if(!file_exists($csvfile)) {
die("File not found. Make sure you specified the correct path.");
}

try {
$pdo = new PDO("mysql:host=$databasehost;dbname=$databasename",
$databaseusername, $databasepassword,
array(
PDO::MYSQL_ATTR_LOCAL_INFILE => true,
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION
)
);
} catch (PDOException $e) {
die("database connection failed: ".$e->getMessage());
}

$affectedRows = $pdo->exec("LOAD DATA LOCAL INFILE ".$pdo->quote($csvfile)." INTO TABLE `$databasetable`
FIELDS TERMINATED BY ".$pdo->quote($fieldseparator)."LINES TERMINATED BY ".$pdo->quote($lineseparator));

echo "Loaded a total of $affectedRows records from this csv file.\n";

?>
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]