Я пытаюсь загрузить данные за 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;
Я столкнулся со следующими проблемами: -
Некоторые столбцы с целыми данными также имеют строковые данные, поэтому эти части не загружаются правильно. Я попытался добавить OPTIONALLY ENCLOSED BY '"'
но он не работает.
Невозможно изменить дату на формат даты SQL
Другие ошибки, такие как Row, не содержат данных для всех столбцов, а данные, усеченные для столбцов даты, появляются.
Я изо всех сил пытаюсь это исправить. Пожалуйста помоги.
Спасибо и с уважением
Вы не сможете просто загрузить неправильную CSV в базу данных и исправить ее.
Если у вас есть доступ к PHP/Python или другому языку, на котором есть драйвер для подключения к вашим db-моделям, загрузите этот файл в массив или используйте что-то похожее на fgets()
в php, чтобы загружать его по очереди и обрабатывать каждую строку отдельно, исправить/преобразовать данные, а затем нажать его на движок db (я бы предложил даже группировать вставки для скорости).
Вы имеете дело не только с преобразованием, но могут возникнуть проблемы с строковой кодировкой (вы не указали какой-либо из своих CREATE TABLE
которые могут вызвать проблему сами по себе.