将特定列从text-file导入mysql ..这可能吗?

时间:2011-02-11 01:57:17

标签: mysql import

我刚刚从data.gov下载了一堆文本文件,文本文件中有一些我真的不需要的字段。

有没有办法导入列[1,3]并保留其余列?

我想我将使用'在文件中加载数据'进行导入,但是在mysql页面上没有看到关于如何仅导入某些列的任何内容。 http://dev.mysql.com/doc/refman/5.0/en/load-data.html

字段由^分隔。 我很清楚,如果txt文件中的一行是

00111^first column entry^second column entry^this would be the 3rd column

我想让我的mysql表包含

first column entry | this would be the 3rd column

4 个答案:

答案 0 :(得分:2)

您可以使用以下内容导入特定列:

LOAD DATA LOCAL INFILE 'yourFile' INTO TABLE table_name
FIELDS TERMINATED BY '^' (column1, @dummy, column3, @dummy);

将所有不需要的列放在@dummy。

答案 1 :(得分:1)

您可以随时创建一个带有虚拟列的表,在加载文件后将其删除(假设您不必经常加载文件)。

这样的事情:

LOAD DATA LOCAL INFILE '/path/to/file' INTO TABLE table_name
FIELDS TERMINATED BY '^' (dummy_column1, column1, dummy_column2, column2);
ALTER TABLE table_name DROP dummy_column1;
ALTER TABLE table_name DROP dummy_column2;

答案 2 :(得分:1)

假设有一个Unix平台,你可以过滤上游的字段。

cut -d^ -f2,4 mygovfile.dat > mytable.txt

要过滤第一列和第三列,请使用首选方法导入。 例如

mysqlimport --local -uxxx -pyyy mydb --fields-terminated-by="^" mytable.txt ....

答案 3 :(得分:0)

处理此问题的两种最常见方式:

  1. 将数据导入到a中 临时表,移动你需要的东西 然后进入你的“真实”表 截断登台表。
  2. 使用文本实用程序仅剪切 你需要什么。
  3. 我选择的文字实用程序是awk。一个最小的awk脚本 - 如果没有一些调整可能不适合你 - 看起来像这样。

    $ awk 'BEGIN { FS="^";OFS=",";}{print $2, $4}' test.dat
    first column entry,this would be the 3rd column
    

    什么样的调整?它通常涉及处理嵌入式逗号,单引号和双引号。

    这部分

    BEGIN { FS="^";OFS=",";}{print $2, $4}
    

    是整个awk程序。

    awk rock。