我正在尝试从下面的链接加载2012年第一季度的数据https://s3.amazonaws.com/capitalbikeshare-data/index.html
我的代码是follows:-
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;
我面临以下问题issues:-
一些包含整数数据的列也包含字符串数据,因此这些部分无法正确加载。我试图补充 OPTIONALLY ENCLOSED BY '"'
但它不起作用。
无法将日期更改为sql日期格式
其他错误,如行不包含所有列的数据,以及日期列的数据被截断。
我一直在努力纠正这一点。请帮忙。
谢谢和问候
1条答案
按热度按时间jjjwad0x1#
你不能简单地将错误的csv加载到db中并修复它。
如果您可以访问php/python或其他具有连接到db引擎的驱动程序的语言,请将该文件加载到数组中,或使用类似于
fgets()
在php中,要逐行加载数据并分别处理每一行,请修复/转换数据,然后将其推送到db引擎(我甚至建议对插入进行分组以提高速度)。您不仅要处理转换,而且字符串编码可能会有问题(您在代码中没有指定任何内容)
CREATE TABLE
这本身就可能引起问题。