通过命令行

时间:2018-03-15 17:08:56

标签: mysql sql csv

我有一个csv文件,想要将其中一部分导入我的Mysql数据库。 从this question开始,我在Mysql命令行中尝试了这个命令

 load data local infile 'mycsv.csv’ into table mytable fields terminated by ',' enclosed by '"' lines terminated by '\n' (entity_ticker,harvested_at, entity_sector,entity_competitors,story_type,story_source,event,entity_sentiment,event_sentiment,event_relevance,entity_relevance,entity_industry)

括号中的那些是我要放在表格中的列。顺序与我的表相同,但与csv文件不同。

并且mysql没有做这样的事情:

mysql>  load data local infile '2013first1000.csv’ into table news_dataset fields terminated by ',' enclosed by '"' lines terminated by '\n' (entity_ticker,harvested_at, entity_sector,entity_competitors,story_type,story_source,event,entity_sentiment,event_sentiment,event_relevance,entity_relevance,entity_industry)
    "> 
    "> 
    "> 
    "> 

这是我在txt中打开的文件的前两行:

  

signal_id,story_id,story_group_id,new_story_group,story_group_count,SOURCE_ID,AUTHOR_ID,story_type,story_source,templated_story_score,story_traffic,story_group_traffic_sum,story_group_exposure,entity_sentiment,event_sentiment,story_sentiment,story_group_sentiment_avg,story_group_sentiment_stdev,ENTITY_NAME,entity_ticker,entity_exchange,entity_relevance,entity_country,entity_indices ,entity_industry,entity_region,entity_sector,entity_competitors,ENTITY_TYPE,entity_composite_figi,entity_exch_code,entity_figi,entity_market_sector,entity_security_description,entity_security_type,entity_share_class_figi,entity_unique_id,entity_unique_id_fut_opt,entity_author_republish_score,entity_author_timeliness_score,entity_source_republish_score,entity_source_timeliness_score,事件,event_group,event_relevance,event_author_republish_score,event_author_timeliness_score,event_source_republish_score,event_source_timeliness_score ,event_impact_pct_change_avg,event_impact_pct_change_stdev,event_impact_pos,E vent_impact_neg,event_impact_gt_mu_add_sigma,event_impact_lt_mu_sub_sigma,event_impact_gt_mu_pos_add_sigma_pos,event_impact_lt_mu_neg_sub_sigma_neg,event_impact_gt_mu_pos_add_2sigma_pos,event_impact_lt_mu_neg_sub_2sigma_neg,event_impact_gt_1pct_pos,event_impact_lt_1pct_neg,overall_source_timeliness_score,overall_source_republish_score,overall_author_republish_score,overall_author_timeliness_score,harvested_at   5a431613914455535dd2f7e3,59a8c0cb631131661f7cca72,629355b4-5ef4-45ab-872A-9fd1809ca49d,F,552,hW9kPL6pMO0suREcwfIObD7SjwY =,A / mu8VqEc7agwge3hbjXgdFfDeA =,新闻,broadcastengineering.com ,, 11548,308325207322,高,31.2,33.35,31.2,36.9,38.9,索尼   Corp Ord,SNE,纽约证券交易所,100,N / A,[],消费者   电子/电器,N / A,消费   非耐用品, “[” “MSFT””, “” IBM “”, “” INTC “”, “” 4331 “”, “” NOKIA “”, “” HPQ “”, “” DIS “”, “”微星 “”, “” AAPL “”, “” PHG “”]”,US_EQUITY,BBG000BT7ZK6,联合国,BBG000BT81N7,公平,SNE,ADR,BBG001S5W6H8,EQ0010136500009000,0,70.2,0.9566,40.4852,就业   行动 - 一般,就业   动作,50.8 ,,, 0,32.5118 ,,,,,,,,,,,,, 53.7511,0.53,0,64.2908,2013-08-01T00:00:03.000Z

你能告诉我怎么做吗?

3 个答案:

答案 0 :(得分:2)

1)'顺序与我的表相同,但与csv文件不一样。' - 使订单相同,那么使用csv import的目的是什么?  用这个 -

load data local infile 'mycsv.csv' into table mytable fields terminated by ',' enclosed by ' ' lines terminated by '\n' 

2)仍然想忽略列 - 来自Mysql docs:

您还可以通过将输入值分配给用户变量而不将变量分配给表格列来丢弃输入值:

LOAD DATA INFILE 'file.txt'  
INTO TABLE t1 (column1, @dummy, column2, @dummy, column3);

3)跳过第一行 - 使用忽略1行

答案 1 :(得分:1)

来自documentation

  

如果中的字段顺序,您还必须指定列列表   输入文件与表中列的顺序不同。   否则,MySQL无法告诉如何将输入字段与表匹配   列。

换句话说,您的列列表必须与CSV文件中的顺序相匹配才能生效。

要忽略csv中的列,您可以将它们分配给列列表中的变量,然后不对它们进行任何进一步处理。如果你的csv有4列而你只想要第一列和第三列,那么列列表就像

(first_col, @dummy, third_col, @dummy)

在您的情况下,您可以复制标题行并将您不想要的任何列名更改为@dummy。

您还希望直接在列列表之前添加IGNORE 1 LINES,以便您可以使用列名跳过第一行。

答案 2 :(得分:0)

有时您可能需要使用“ COLUMNS TERMINATED BY”代替“ FIELDS TERMINATED BY”