Skip to content

Instantly share code, notes, and snippets.

@KarelWintersky
Last active September 13, 2016 02:44
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save KarelWintersky/1e13d50512e8ebe67385831f277b8318 to your computer and use it in GitHub Desktop.
Save KarelWintersky/1e13d50512e8ebe67385831f277b8318 to your computer and use it in GitHub Desktop.
CSV to SQL convertor (insert only).
<?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>
@KarelWintersky
Copy link
Author

Хочешь сделать что-то хорошо - сделай это сам.©
Задолбался искать в интернете конвертор, сделал ручками.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment