创建 mysql table 并加载数据
creating mysql table and loading data
我遇到了问题。
我有这个数据。存储的数据 gene_ontology.txt 提取自:http://gala.bx.psu.edu/downloads/hg15/genes/
在这个数据中,在第二列中有多个字符串,“-”,“,”,以及字符串和数字之间的空格。
数据示例:
GO:0000001,mitochondrion inheritance
GO:0000002,mitochondrial genome maintenance
GO:0000003,reproduction
GO:0000005,ribosomal-chaperone activity
GO:0000006,high affinity zinc uptake transmembrane transporter......
我想将该数据插入到我创建的 table 中,如下所示:
mysql> create table annotation
-> (GOid VARCHAR(255) NOT NULL,
-> FUNCTION TEXT NOT NULL,
-> PRIMARY KEY goid (goid));
我加载时:
LOAD DATA LOCAL INFILE 'gene_ontology.txt' INTO TABLE annotation FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n';
Query OK, 26077 rows affected, 1639 warnings (0.89 sec)
Records: 26083 Deleted: 0 Skipped: 6 Warnings: 1639 (<- LOADING GAVE ME WARNING AND SKIPPED RESULTS)
结果:
mysql> SELECT GOid FROM annotation LIMIT 6;
表现不错
+-------------+
| GOid |
+-------------+
| GO:0000001 |
| GO:0000002 |
| GO:0000003 |
| GO:0000005 |
| GO:0000006 |
+-------------+
但是,问题是当我 select 两列:
mysql> SELECT GOid, FUNCTION FROM annotation LIMIT 10;
+-------------+----------------------------------------------------------------+
| GOid | FUNCTION |
+-------------+----------------------------------------------------------------+
|nce
|enome maintenance
|
| activity
|GO:0000006 | high affinity zinc uptake transmembrane transporter activity
|000007 | low-affinity zinc ion transmembrane transporter activity
|
| GO:0000009 | alpha-1 |
|hexaprenyltranstransferase activity
|
+-------------+----------------------------------------------------------------+
或只有第二个:
+----------------------------------------------------------------+
| FUNCION |
+----------------------------------------------------------------+
|
|nce
|
|
|igh affinity zinc uptake transmembrane transporter activity
|ffinity zinc ion transmembrane transporter activity
|
| alpha-1 |
|stransferase activity
|
+----------------------------------------------------------------+
我不知道发生了什么。
为了解决,我尝试使用 LONGTEXT 和 BLOB 更改 "FUNCTION" 的类型。
我做了这些更改,因为我认为问题出在第二列 (FUNCTION) 的类型上。
但是我没有成功。
问题似乎与第二列文本之间的逗号“,”有关。
尝试将整个文件作为固定宽度加载到 TableA
中的单个列中。然后用substr()
把第一个字段放到第二个tableTableB's
column1,而第二个字段放到column2。
这可能会加载数据,您可以进一步分析数据以改进加载过程。
我遇到了问题。
我有这个数据。存储的数据 gene_ontology.txt 提取自:http://gala.bx.psu.edu/downloads/hg15/genes/ 在这个数据中,在第二列中有多个字符串,“-”,“,”,以及字符串和数字之间的空格。
数据示例:
GO:0000001,mitochondrion inheritance
GO:0000002,mitochondrial genome maintenance
GO:0000003,reproduction
GO:0000005,ribosomal-chaperone activity
GO:0000006,high affinity zinc uptake transmembrane transporter......
我想将该数据插入到我创建的 table 中,如下所示:
mysql> create table annotation
-> (GOid VARCHAR(255) NOT NULL,
-> FUNCTION TEXT NOT NULL,
-> PRIMARY KEY goid (goid));
我加载时:
LOAD DATA LOCAL INFILE 'gene_ontology.txt' INTO TABLE annotation FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n';
Query OK, 26077 rows affected, 1639 warnings (0.89 sec)
Records: 26083 Deleted: 0 Skipped: 6 Warnings: 1639 (<- LOADING GAVE ME WARNING AND SKIPPED RESULTS)
结果:
mysql> SELECT GOid FROM annotation LIMIT 6;
表现不错
+-------------+
| GOid |
+-------------+
| GO:0000001 |
| GO:0000002 |
| GO:0000003 |
| GO:0000005 |
| GO:0000006 |
+-------------+
但是,问题是当我 select 两列:
mysql> SELECT GOid, FUNCTION FROM annotation LIMIT 10;
+-------------+----------------------------------------------------------------+
| GOid | FUNCTION |
+-------------+----------------------------------------------------------------+
|nce
|enome maintenance
|
| activity
|GO:0000006 | high affinity zinc uptake transmembrane transporter activity
|000007 | low-affinity zinc ion transmembrane transporter activity
|
| GO:0000009 | alpha-1 |
|hexaprenyltranstransferase activity
|
+-------------+----------------------------------------------------------------+
或只有第二个:
+----------------------------------------------------------------+
| FUNCION |
+----------------------------------------------------------------+
|
|nce
|
|
|igh affinity zinc uptake transmembrane transporter activity
|ffinity zinc ion transmembrane transporter activity
|
| alpha-1 |
|stransferase activity
|
+----------------------------------------------------------------+
我不知道发生了什么。 为了解决,我尝试使用 LONGTEXT 和 BLOB 更改 "FUNCTION" 的类型。 我做了这些更改,因为我认为问题出在第二列 (FUNCTION) 的类型上。 但是我没有成功。
问题似乎与第二列文本之间的逗号“,”有关。
尝试将整个文件作为固定宽度加载到 TableA
中的单个列中。然后用substr()
把第一个字段放到第二个tableTableB's
column1,而第二个字段放到column2。
这可能会加载数据,您可以进一步分析数据以改进加载过程。