`
happyqing
  • 浏览: 3204828 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

mysql导入2000W csv格式文件

阅读更多

 

技术贴,只做练习用,导完后请删除数据。

 

网上有一篇文章

如何快速导入 2000W 到 Mysql

 

可惜我没有phpMyAdmin啊,也不会php啊,

 

其实csv就是个文本文件

 

用基础的方法

 

创建kf数据库,

创建表

CREATE TABLE `kfinfo` (
  `Name` varchar(100) DEFAULT NULL,
  `CardNo` varchar(50) DEFAULT NULL,
  `Descriot` varchar(150) DEFAULT NULL,
  `CtfTp` varchar(50) DEFAULT NULL,
  `CtfId` varchar(50) DEFAULT NULL,
  `Gender` varchar(50) DEFAULT NULL,
  `Birthday` varchar(50) DEFAULT NULL,
  `Address` varchar(200) DEFAULT NULL,
  `Zip` varchar(50) DEFAULT NULL,
  `Dirty` varchar(50) DEFAULT NULL,
  `District1` varchar(50) DEFAULT NULL,
  `District2` varchar(50) DEFAULT NULL,
  `District3` varchar(50) DEFAULT NULL,
  `District4` varchar(50) DEFAULT NULL,
  `District5` varchar(50) DEFAULT NULL,
  `District6` varchar(50) DEFAULT NULL,
  `FirstNm` varchar(50) DEFAULT NULL,
  `LastNm` varchar(50) DEFAULT NULL,
  `Duty` varchar(50) DEFAULT NULL,
  `Mobile` varchar(50) DEFAULT NULL,
  `Tel` varchar(50) DEFAULT NULL,
  `Fax` varchar(50) DEFAULT NULL,
  `EMail` varchar(50) DEFAULT NULL,
  `Nation` varchar(50) DEFAULT NULL,
  `Taste` varchar(150) DEFAULT NULL,
  `Education` varchar(50) DEFAULT NULL,
  `Company` varchar(50) DEFAULT NULL,
  `CTel` varchar(50) DEFAULT NULL,
  `CAddress` varchar(50) DEFAULT NULL,
  `CZip` varchar(50) DEFAULT NULL,
  `Family` varchar(50) DEFAULT NULL,
  `Version` varchar(50) DEFAULT NULL,
  `id` varchar(50) NOT NULL DEFAULT '',
  PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

 

关键是 存储引擎MyISAM,这种效率高,(不支持事务)每个表有单独的存储文件(多个),方便管理。

存储引擎innodb 一般默认的都是innodb,效率也不低,支持事务,

其一般默认用共享表空间,用一个文件存储数据,ibdata1,共享表空间也可以配置多个存储文件。

可以通过调整innodb_file_per_table使用独享表空间,每个表有自己的存储文件。

 

因为我的库默认是innodb,不想调整了,就为单独的表指定存储引擎就行,这样这个表有自己的存储文件,不会影响其他的库。

 

如果你对数据完整性,要求不高,可以先不建主键,

建了主键后,会发现有些数据可能有问题,需要调整。

 

处理数据

csv中有一些特殊字符不好处理,

比如:\  这个还好可以加入 ESCAPED BY '' 来处理

但是数据中有回车换行实在不好处理,因为判断一行的结束也使用的的回车换行

 

只能用笨办法处理数据了

用UltraEdit打开文件,用正则搜索

搜索^p^p来处理多个回车换行

搜索^p,处理回车换行,有的不需处理(如:前一个值是id列),处理时先看清id

搜素%[~,]+^p处理回车换行 

 

还有一些特殊的需要修改的记录

id:6713304,6808632,9670832,16800059,17496919,18601591

 

还有一些需要修改的记录

id:5332595,16838052,16838057

把"tsai jason"的双引号去掉

 

平均一个文件有5个左右的地方需要处理。

这种方法好像太笨了,如果有能自动处理回车换行的方法就好了。

 

导入

至此数据整理的差不多了,其实导入很快,一个文件一分钟就能导进去,1秒6万左右。

要是没有主键导入的更快,嗖嗖的。

 

mysql命令:LOAD DATA INFILE

 

语法 ……

http://www.2cto.com/database/201108/99655.html

http://douglaslau.iteye.com/blog/1471643

http://dev.mysql.com/doc/refman/5.1/en/load-data.html

 

mysql> LOAD DATA INFILE 'E:\\2000W\\1-200W.csv' 
INTO TABLE kfinfo 
FIELDS TERMINATED BY ',' 
OPTIONALLY ENCLOSED BY '"' 
ESCAPED BY '' 
LINES TERMINATED BY '\r\n' 
ignore 1 lines;

 

从第二个文件起,ignore 2 lines; (忽略前几行)

 

 Navicat支持导入csv格式,选择(txt)。不过用工具导没有用命令快。

 

可能用到的sql

select id,CtfId from kfinfo order by id;

select * from kfinfo where id = ''; 

select count(*) from kfinfo;

--TRUNCATE kfinfo;

 TRUNCATE超快,会清数据文件,很好用。

 

最后导入20050144,貌似比用php导入的多,估计是他没做数据整理。

库大小,3.41G

弄这个这么费劲,还不如弄那个1.71G的。

 

之后可对你感兴趣的列创建索引。如Name,CtfId,Mobile

 

ALTER TABLE `kfinfo`
ADD INDEX `idx_kfinfo_name` (`Name`) USING BTREE ;

  创建索引很慢很慢,请耐心等待。

 

OK了,可以查询了。

 

PS:可惜没有我。

 

分享到:
评论
1 楼 gxz1989611 2014-01-29  
  

相关推荐

    使用PHP导入和导出CSV文件

    **导入CSV文件到MySQL** 1. **连接数据库**:首先,我们需要通过PHP的`mysqli_connect()`函数建立与MySQL服务器的连接。例如,在`connect.php`文件中,可以编写如下代码: ```php $servername = "localhost"; $...

    英汉单词词汇数据库MYSQL版和CSV版.rar

    简明英汉词典的MYSQL/ CSV数据库,适合开发手机词典时使用,包含210311个单词及词组的中英文简明释义,并通过英国国家语料库词频资料前15万单词和美国当代语料库前6万单词范围进行校对,补充了数万词汇,基本做到...

    Python实现将MySQL数据库表中的数据导出生成csv格式文件的方法

    将查询结果保存到CSV文件,可以使用Python的`csv`模块。下面是一个基本的写入示例: ```python import csv # 定义文件名 filename = f"{fileDir}/{checkAcc_date}.csv" # 打开文件,准备写入 with open(filename,...

    txt数据文件导入mysql数据库

    例如,你可以使用C语言读取原始数据,然后按照MySQL所需的格式写入新的TXT文件,再由MySQL导入。 以下是一个简单的C语言示例,展示如何读取TXT文件并写入新格式的文件: ```c #include int main() { FILE *...

    PHP导出导入csv

    导入CSV文件通常涉及到读取文件内容并将其转换为数组。PHP的`fgetcsv()`函数可以做到这一点。在connect.php或其他适当的文件中,你可以打开CSV文件,逐行读取并解析数据: ```php $file = fopen('data.csv', 'r')...

    从MySQL导入导出大量数据的程序实现方法

    导入程序的逻辑与导出相反,它读取文本文件中的数据,并将其插入到MySQL数据库中。同样,首先连接到数据库,然后使用`file`函数读取整个文件内容。每行数据被解析,特殊字符被还原,然后通过`addslashes`函数转义,...

    CSV文件操作

    一、CSV文件格式基础 CSV文件中的数据是以逗号分隔的形式存储的,每一行代表一个记录,每个字段由逗号分隔。字段可以包含文本、数字或其他数据类型,但特殊字符或逗号需进行转义。例如: ``` 姓名,年龄,城市 张三,...

    操作csv文件

    CSV文件常用于数据库的导入导出,例如MySQL、SQLite等。Python的`pandas`库或特定数据库的Python驱动程序如`pymysql`、`sqlite3`可以实现这一过程。 6. CSV文件在数据分析中的作用: CSV文件作为轻量级的数据格式...

    使用Python对Csv文件操作共5页.pdf.zip

    8. **CSV文件与数据库的交互**:Python还可以将CSV文件导入到数据库(如SQLite、MySQL等),或者从数据库导出为CSV。这对于数据分析和存储非常有用。 9. **性能优化**:对于大量数据,可以使用生成器函数和上下文...

    MySQL数据库30W测试数据.rar

    3. **LOAD DATA INFILE**:MySQL的内置命令,可以快速地从CSV或其他文本文件导入大量数据。 4. **批量插入语句**:将多条INSERT语句合并为一个,减少数据库的事务开销。 在处理30万条数据时,需要注意以下几点: - ...

    php实现CSV文件导入和导出

    本文将详细介绍如何使用PHP结合MySQL来实现CSV文件的导入和导出功能。 首先,我们需要创建一个MySQL数据表来存储数据。这里以一个名为`student`的学生信息表为例,它包含以下字段:`id`(主键,自动递增),`name`...

    php实现利用phpexcel导入导出数据至excel

    1,建立mysql数据库,把excel_demo.sql导入到你的数据库,采取utf-8编码; 2,导入时候请按照xls/demo.xls的格式导入,在linux系统下 xls目录要有下的权限; 3, 默认只有一条数据,导出至少有一条数据; 4,如果数据...

    php excal 导入导出 绝对好用

    1,建立mysql数据库,把excel_demo.sql导入到你的数据库,采取utf-8编码; 2,导入时候请按照xls/demo.xls的格式导入,在linux系统下 xls目录要有下的权限; 3, 默认只有一条数据,导出至少有一条数据; 4,如果数据...

    Excel百万级别数据的导入和导出

    此外,导出格式的选择也很重要,CSV或TSV格式通常比Excel更快,但可能丢失某些格式信息。 9. **并发处理**:多线程或分布式处理可以加速数据导入导出,尤其是在服务器端。例如,使用Java的ExecutorService或Spring...

    python爬虫 猫眼电影和电影天堂数据csv和mysql存储过程解析

    字符串常用方法 ...作用:将爬取的数据存放到本地的csv文件中 使用流程 导入模块 打开csv文件 初始化写入对象 写入数据(参数为列表) import csv with open('test.csv','w') as f: writer = cs

    es2csv:从Elasticsearch导出到CSV文件

    ### CSV文件格式 CSV(Comma-Separated Values)是一种通用的、简单的数据交换格式。文件中的每一行代表一条记录,记录间的字段通过逗号分隔。这种格式易于读写,被大多数数据分析工具所支持,是将数据导入数据库或...

    数据同步 - Powered by MinDoc.pdf

    - **CSV文件到数据库**:将CSV文件导入到Mysql或Udal,前提是目标表已存在。 在使用过程中,需要注意以下几点: - **异常处理**:工具内置了失败重试机制,默认重试次数为3次。 - **版本要求**:DBProxy版本需在...

Global site tag (gtag.js) - Google Analytics