Last active
September 13, 2016 02:44
-
-
Save KarelWintersky/1e13d50512e8ebe67385831f277b8318 to your computer and use it in GitHub Desktop.
CSV to SQL convertor (insert only).
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
$content = ''; | |
if ($_POST["ref"] === "csv2sql") { | |
// prepare data | |
$table_name = $_POST["table_name"]; | |
$csv_delimeter = @isset($_POST['DELIMETER']) ?: ','; | |
$csv_enclosure = @isset($_POST['ENCLOSURE']) ?: '"'; | |
$csv_data = $_POST["csv_data"]; | |
$csv_as_array = explode("\n", $csv_data); | |
$column_names = str_getcsv($csv_as_array[0]); | |
// Generate base query | |
$base_query | |
= "INSERT INTO `$table_name` (" | |
. implode(', ', array_map(function($column){ | |
return trim($column); | |
}, $column_names)) | |
. ') '; | |
// Loop through all CSV data rows and generate separate | |
// INSERT queries based on base_query + the row information | |
unset($csv_as_array[0]); | |
foreach ($csv_as_array as $row) { | |
$data_row | |
= (strpos($row, $csv_enclosure) !== FALSE) | |
? str_getcsv($row, $csv_delimeter, $csv_enclosure) | |
: str_getcsv($row); | |
$content | |
.= $base_query | |
. " VALUES (" | |
. implode(', ', array_map( function($value){ | |
return "'" . trim($value) . "'"; | |
} , $data_row)) | |
. ');' | |
.PHP_EOL; | |
} | |
} | |
?> | |
<!DOCTYPE html> | |
<html> | |
<head> | |
<meta charset="UTF-8"> | |
<meta http-equiv="content-type" content="text/html; charset=utf-8"> | |
<meta name="author" content="Karel Wintersky, 2016"> | |
<meta name="copyright" content="(c) Karel Wintersky"> | |
<meta name="description" content="CSV to SQL simpe convertor"> | |
<meta http-equiv="pragma" content="no-cache"> | |
<title>CSV to SQL convertor</title> | |
</head> | |
<body> | |
<h2>CSV to SQL convertor</h2> | |
<form name="csv2sql" method="post" action="<?php echo $PHP_SELF; ?>"> | |
<input type="hidden" name="ref" value="csv2sql"> | |
Insertion table: <input type="text" name="table_name" value="" size="50" required> | |
<br /> | |
Column delimeter: | |
<select name="delimeter"> | |
<option value=",">,</option> | |
<OPTION value=";">;</OPTION> | |
<OPTION value="|">|</OPTION> | |
</select> | |
<br /> | |
Field enclosure: | |
<select name="ENCLOSURE"> | |
<option value='"'>"</option> | |
<option value="'">'</option> | |
</select> | |
<hr /> | |
<textarea name="csv_data" id="csv_data" rows="30" cols="120"><?php echo $content; ?></textarea> | |
<hr /> | |
<input type="submit" value=" Convert to SQL query "> | |
<input type="reset" value=" CLEAR " onclick="document.getElementById('csv_data').value=''"> | |
</form> | |
</body> | |
</html> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Хочешь сделать что-то хорошо - сделай это сам.©
Задолбался искать в интернете конвертор, сделал ручками.