LOAD DATA LOCAL INFILE COMMAND несколько ошибок

0

Я пытаюсь загрузить данные за 1 квартал 2012 года из приведенной ниже ссылки https://s3.amazonaws.com/capitalbikeshare-data/index.html

Мой код выглядит следующим образом:

DROP DATABASE IF EXISTS bike;
CREATE DATABASE bike;
USE bike;
DROP TABLE IF EXISTS bike_2012;
CREATE TABLE bike_2012(
bike_duration INT NULL,
bike_start_date TIMESTAMP NULL,
bike_end_date TIMESTAMP NULL,
bike_s_station_no INT(5) NULL,
bike_s_station_name VARCHAR(255) NULL,
bike_e_station_no INT(5) NULL,
bike_e_station_name VARCHAR(255) NULL,
bike_number CHAR(6) NULL,
bike_member_type VARCHAR(25) NULL,
bike_ride_number INT auto_increment PRIMARY KEY);

LOAD DATA LOCAL INFILE 'C:/LAGASA_2018/MSBA/Data_Sources/2012-capitalbikeshare-tripdata/2012Q1-capitalbikeshare-tripdata.csv'
INTO TABLE bike_2012
FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '/n'
('bike_duration', @bike_start_date, @bike_end_date, 'bike_s_station_no','bike_s_station_name',
'bike_e_station_no','bike_e_station_name','bike_number','bike_member_type')
SET 'bike_start_date' = STR_TO_DATE(@bike_start_date, '%c/%e/%Y')
SET 'bike_end_date' = STR_TO_DATE(@bike_end_date, '%c/%e/%Y')
IGNORE 1 LINES;

SELECT * FROM bike_2012 LIMIT 10;

Я столкнулся со следующими проблемами: -

  1. Некоторые столбцы с целыми данными также имеют строковые данные, поэтому эти части не загружаются правильно. Я попытался добавить OPTIONALLY ENCLOSED BY '"' но он не работает.

  2. Невозможно изменить дату на формат даты SQL

  3. Другие ошибки, такие как Row, не содержат данных для всех столбцов, а данные, усеченные для столбцов даты, появляются.

Я изо всех сил пытаюсь это исправить. Пожалуйста помоги.

Спасибо и с уважением

Теги:
datetime-format
load-data-infile

1 ответ

0

Вы не сможете просто загрузить неправильную CSV в базу данных и исправить ее.

Если у вас есть доступ к PHP/Python или другому языку, на котором есть драйвер для подключения к вашим db-моделям, загрузите этот файл в массив или используйте что-то похожее на fgets() в php, чтобы загружать его по очереди и обрабатывать каждую строку отдельно, исправить/преобразовать данные, а затем нажать его на движок db (я бы предложил даже группировать вставки для скорости).

Вы имеете дело не только с преобразованием, но могут возникнуть проблемы с строковой кодировкой (вы не указали какой-либо из своих CREATE TABLE которые могут вызвать проблему сами по себе.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню