Использование импорта CSV в phpMyAdmin
phpMyAdmin поддерживает CSV-файлы импорт, посмотрите эту статью для получения более подробной информации (первый результат после: phpMyAdmin csv
)
Использование mysqlimport
Mysql предоставляет приложение CLI, mysqlimport , пример использования (снова CSV):
mysqlimport --fields-optionally-enclosed-by='"' --fields-terminated-by=, \
--lines-terminated-by="\r\n" --user=YOUR_USERNAME --password \
YOUR_DATABASE YOUR_TABLE.csv
Mysql LOAD DATA
Сам Mysql (клиент, запрос) поддерживает команду LOAD DATA INFILE
, пример синтаксиса:
LOAD DATA INFILE 'data.txt' INTO TABLE db2.my_table;
Создание SQL-запроса с помощью php (и вставка вручную)
Вы проанализируете текстовый файл в php, и в результате будет получен один большой оператор INSERT
(это будет полезно, если / если вы не можете подключиться к mysql с сервера, на котором вы запускаете скрипт:
// This will escape values correctly
function escapeValues( &$val){
// mysql_real_escape_string is not an option (remote server not accessible
// in this case)
return "'" . addslashes( $val) . "'";
}
$fp = fopen( $filename, 'r') or die( 'Cannot open');
$result = array();
while( $row = fgets( $fp)){
$values = explode( '/', $row);
array_walk( $values, 'escapeValues');
$results[] = '(' . implode( ', ', $values) . ')';
}
fclose( $fp);
if( !count( $results){
die();
}
echo 'INSERT INTO tableName (col1, col2, ... colN) VALUES ';
echo implode( ",\n", $results);
echo "\n";
Прямое подключение и прямой импорт
Это должно быть лучшим подходом для вас.
$conn = mysql_connect( ...) or die(...);
mysql_select_db(...);
// Now we need to build small class which will allow us escape values properly
// mysql_escape_string is DEPRECATED and mysql_real_escape_string
// requires connection parameter
// Ps: choose better name
class CallbackHack {
public $connection = null;
public function escapeValue( &$val){
$val = "'" . mysql_real_escape_string( $val, $this->connection) . "'";
}
}
$hack = new CallbackHack();
$hack->connection = $conn;
$fp = fopen( $filename, 'r') or die( 'Cannot open');
mysql_query( 'BEGIN TRANSACTION;'); // Increases insert performance for InnoDb
while( $row = fgets( $fp)){
$values = explode( '/', $row);
array_walk( $values, array( $hack, 'escapeValue'));
$sql = 'INSERT INTO tableName (col1, col2, ... colN) VALUES (' .
implode( ', ', $values) . ');';
mysql_query( $sql);
}
mysql_query( 'COMMIT;'); // Make sure it will run
fclose( $fp);