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() {