diff --git a/adminer/include/adminer.inc.php b/adminer/include/adminer.inc.php index 322f800a..d724f274 100644 --- a/adminer/include/adminer.inc.php +++ b/adminer/include/adminer.inc.php @@ -494,7 +494,7 @@ document.getElementById('username').focus(); * @return array */ function dumpFormat() { - return array('sql' => 'SQL', 'csv' => 'CSV,', 'csv;' => 'CSV;'); + return array('sql' => 'SQL', 'csv' => 'CSV,', 'csv;' => 'CSV;', 'tsv' => 'TSV'); } /** Export table structure diff --git a/adminer/include/functions.inc.php b/adminer/include/functions.inc.php index 1d9c1860..3d289f5f 100644 --- a/adminer/include/functions.inc.php +++ b/adminer/include/functions.inc.php @@ -697,11 +697,11 @@ function search_tables() { */ function dump_csv($row) { foreach ($row as $key => $val) { - if (preg_match("~[\"\n,;]~", $val) || $val === "") { + if (preg_match("~[\"\n,;\t]~", $val) || $val === "") { $row[$key] = '"' . str_replace('"', '""', $val) . '"'; } } - echo implode(($_POST["format"] == "csv" ? "," : ";"), $row) . "\n"; + echo implode(($_POST["format"] == "csv" ? "," : ($_POST["format"] == "tsv" ? "\t" : ";")), $row) . "\n"; } /** Apply SQL function diff --git a/adminer/select.inc.php b/adminer/select.inc.php index 9d4b5ad2..43387935 100644 --- a/adminer/select.inc.php +++ b/adminer/select.inc.php @@ -45,7 +45,7 @@ if ($_POST && !$error) { if ($_POST["export"]) { $adminer->dumpHeaders($TABLE); $adminer->dumpTable($TABLE, ""); - if (ereg("csv", $_POST["format"])) { + if (ereg("csv|tsv", $_POST["format"])) { $row = array_keys($fields); if ($select) { $row = array(); @@ -143,7 +143,7 @@ if ($_POST && !$error) { preg_match_all('~(?>"[^"]*"|[^"\\r\\n]+)+~', $file, $matches); $affected = count($matches[0]); begin(); - $separator = ($_POST["separator"] == "csv" ? "," : ";"); + $separator = ($_POST["separator"] == "csv" ? "," : ($_POST["separator"] == "tsv" ? "\t" : ";")); foreach ($matches[0] as $key => $val) { preg_match_all("~((\"[^\"]*\")+|[^$separator]*)$separator~", $val . $separator, $matches2); if (!$key && !array_diff($matches2[1], $cols)) { //! doesn't work with column names containing ",\n @@ -396,7 +396,7 @@ if (!$columns) { } print_fieldset("import", lang('CSV Import'), !$rows); echo " "; - echo html_select("separator", array("csv" => "CSV,", "csv;" => "CSV;"), $adminer_export["format"], 1); // 1 - select + echo html_select("separator", array("csv" => "CSV,", "csv;" => "CSV;", "tsv" => "TSV"), $adminer_export["format"], 1); // 1 - select echo " \n"; echo "\n"; diff --git a/changes.txt b/changes.txt index 356b0782..3e34d28f 100644 --- a/changes.txt +++ b/changes.txt @@ -1,5 +1,6 @@ Adminer 3.1.0-dev: Customizable export +TSV export and import Support for virtual foreign keys Option to show only errors in SQL command Link to bookmark SQL command diff --git a/editor/include/adminer.inc.php b/editor/include/adminer.inc.php index e1480f11..ba76c860 100644 --- a/editor/include/adminer.inc.php +++ b/editor/include/adminer.inc.php @@ -439,7 +439,7 @@ ORDER BY ORDINAL_POSITION", null, "") as $row) { //! requires MySQL 5 } function dumpFormat() { - return array('csv' => 'CSV,', 'csv;' => 'CSV;'); + return array('csv' => 'CSV,', 'csv;' => 'CSV;', 'tsv' => 'TSV'); } function dumpTable() {