WordPress, вставка строк таблицы из текстового файла в формате csv

В настоящее время работает над плагином WordPress, который позволит вставлять текстовый файл в формате CSV в пользовательскую таблицу в базе данных WordPress.

Ранее я использовал команду для создания таблицы и столбцов с соответствующими типами данных. Это пример таблицы, которую я создаю:

global $gtfs_db_version;
$gtfs_db_version = '1.0';

function routes_install() {
global $wpdb;
global $gtfs_db_version;
$table_name = 'routes_txt';

$charset_collate = $wpdb->get_charset_collate();

$sql = "CREATE TABLE $table_name (
id mediumint(9) NOT NULL AUTO_INCREMENT,
route_long_name varchar(80) NOT NULL,
route_type  varchar(80),
route_text_color    varchar(80),
route_color varchar(80),
agency_id   varchar(80),
route_id    varchar(80),
route_url   varchar(80),
route_short_name    varchar(80),
PRIMARY KEY  (id)
) $charset_collate;";

require_once( ABSPATH . 'wp-admin/includes/upgrade.php' );
dbDelta( $sql );

add_option( 'gtfs_db_version', $gtfs_db_version );
};

Теперь в команде, где я создаю строки таблицы из txt-файла, есть вероятность, что порядок столбцов будет меняться каждый раз, когда будет доступен новый txt-файл. Это где проблема может возникнуть. Прямо сейчас я должен вручную изменить назначение столбца в команде. Первая строка имеет имена столбцов во время вставки, если это помогает.

function insert_routes(){
global $wpdb;
$path_name =   get_option( "routes_txt" );
$table_name = 'routes_txt';
$firstline = array_shift(file($path_name));
$file_array = file($path_name);
$file_line_num = 1;
foreach ($file_array as $file_array_value) {
$number_of_lines =  count($file_array); // number of lines in txt file
$file_array_value = preg_replace('/\s/', '', $file_array_value);

//if first line of file that has tables column names
$stringArray = explode(",",$file_array_value);
if($file_line_num == 1){
echo '';
}else{

$route_id = array_values($stringArray)[0];
$route_short_name = array_values($stringArray)[1];
$route_long_name = array_values($stringArray)[2];
$route_type = array_values($stringArray)[3];
$route_url = array_values($stringArray)[4];
$agency_id = array_values($stringArray)[5];
$route_color = array_values($stringArray)[6];
$route_text_color = array_values($stringArray)[7];

//puts everything seperated by a comma in a array

$wpdb->replace(
$table_name,
array(
'id' => $file_line_num,
'route_long_name' => $route_long_name,
'route_type' => $route_type,
'route_text_color' => $route_text_color,
'route_color' => $route_color,
'agency_id' => $agency_id,
'route_id' => $route_id,
'route_url' => $route_url,
'route_short_name' => $route_short_name
)
);

}

$file_line_num++;
}

};

Есть ли способ с помощью команды SQL назначить правильные столбцы для правильных предварительно назначенных столбцов?

РЕДАКТИРОВАТЬ: в соответствии с просьбой, первая пара строк двух разных версий маршрутов rout_txt CSV.

Версия 1

route_long_name, route_type, route_text_color, route_color, agency_id, route_id, route_url, route_short_name
, 3, FFFFFF, 008C9B, NCTD, 318, http://www.gonctd.com/breeze, 318
, 3, FFFFFF, 008C9B, NCTD, 313, http://www.gonctd.com/breeze, 313

Версия 2

route_id, route_short_name, route_long_name, route_type, route_url, agency_id, route_color, route_text_color
301, 101, ,3, http://www.gonctd.com/breeze, NCTD, 008C9B, FFFFFF
302, 302, ,3, http://www.gonctd.com/breeze, NCTD, 008C9B, FFFFFF

И прежде чем вы спросите, попросить людей, ответственных за создание этих CSV, придерживаться последовательной парадигмы колонок, невозможно (я знаю, верно? ARG!)

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector