【问题标题】:Importing data from CSV file in MySQL从 MySQL 中的 CSV 文件导入数据
【发布时间】:2013-11-08 05:18:11
【问题描述】:

我创建了一个名为 StatesandCities 的表,其中包含 3 列:CountryCode(它的外键)、StateCity,如下图:

create table StatesandCities (CountryCode varchar(2), State varchar(20), city varchar(20),foreign key (CountryCode) references ListOfCountries (CountryCode));

我有一个包含所有值的 .CSV 文件:

CountryCode,State,City
IN,Karnataka,Bangalore
IN,Karnataka,Mysore
IN,Karnataka,Tumkur
IN,Maharashtra,Mumbai
IN,Maharashtra,Thane
IN,Maharashtra,Nasik
GB,Yorkshire,County Hill
GB,SouthWales,Murrey

这正是它在 Excel 工作表中的表现:

CountryCode State   City
IN  Karnataka   Bangalore
IN  Karnataka   Mysore
IN  Karnataka   Tumkur
IN  Maharashtra Mumbai
IN  Maharashtra Thane
IN  Maharashtra Nasik
GB  Yorkshire   County Hill
GB  SouthWales  Murrey

我使用此代码在 MySQL 5.6 命令行客户端中输入 CSV 文件:

LOAD DATA LOCAL INFILE 'H:/Statesncities.csv' INTO TABLE StatesandCities FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n' ignore 1 lines (CountryCode, State, City);

正在输入值,但它们不是我需要的正确表格格式。而且,如果数据值很长,它也会被削减。一切都混为一谈: 我尝试过更改屏幕大小、页面布局,但似乎没有任何效果。

输出:

【问题讨论】:

    标签: mysql sql excel csv


    【解决方案1】:

    试试这个:

    LOAD DATA LOCAL INFILE 'H:/countries.csv' INTO TABLE ListOfCountries
        FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
        LINES TERMINATED BY '\n'
        IGNORE 1 LINES (CountryName, CountryCode);
    

    我正在使用 IGNORE 1 LINES 跳过 CSV 标题行。我还可以选择转为FIELDS ENCLOSED BY

    您可以参考 MySQL 手册的LOAD DATA INFILE Syntax 部分了解更多详细信息。

    【讨论】:

    • @confused 好吧,那么您的 CSV 文件未按照您的说明进行格式化。请检查您的 CSV 文件并使用任何新的相关详细信息更新问题。 :)
    • @confused 您的 CSV 文件的格式似乎与此处描述的完全不符。你能检查一下你描述的是否正确吗?您在此处粘贴的 CSV 文件应该可以正常工作。
    • @confused 我的意思是您的 CSV 数据,您在问题中粘贴的行似乎还可以(我已经用他们测试了我的答案),但是如果您的导入不起作用,则文件的其他行可能与预期不同...
    • @confused 您能否删除您的评论并将所有 CSV 内容粘贴到问题本身中?在这里它不保留格式...
    • @confused Ermm,这似乎和以前的 CSV 数据不一样...CountryName 是哪里?
    【解决方案2】:

    this should do it !!

    BULK INSERT mycountry
            FROM 'C:\CSVmydata\country.csv'
            WITH
            (
            FIRSTROW = 2,
            FIELDTERMINATOR = ',',  --CSV field delimiter
            ROWTERMINATOR = '\n',   --Use to shift the control to next row
            ERRORFILE = 'C:\CSVmydata_error\countryErrorRows.csv',
            TABLOCK
            )
    

    【讨论】:

    • 他要求的是 MySQL,而不是 MS-SQL。
    • ye.. 在mysql中使用LOAD DATA LOCAL INFILE 'abc.csv' INTO TABLE abc insted of bulkinsert
    • 我之前确实用过。
    猜你喜欢
    • 1970-01-01
    • 2016-11-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-15
    • 1970-01-01
    • 2015-06-30
    相关资源
    最近更新 更多