【问题标题】:using linux shell script insert dump data to Mysql使用 linux shell 脚本将转储数据插入 Mysql
【发布时间】:2015-01-04 03:00:53
【问题描述】:

我使用下面的脚本从 textpad 向 sql 插入数据。

#!/bin/bash

mysql --utest -ptest test << EOF

LOAD DATA INFILE 'test.txt'
    INTO TABLE content_delivery_process
    FIELDS TERMINATED BY ',';

EOF

在我的测试文件中,我的格式类似于,

cast  ,    date   ,   name   ,   buy

我可以插入,但我需要如下格式,

 S.NO    |   date    |    name    |    buy    |    cast

【问题讨论】:

    标签: mysql linux shell


    【解决方案1】:

    您可以指定要导入的列:

    来自 MySQL 手册:

    MySQL LOAD DATA INFILE

    以下示例加载 persondata 表的所有列:

    LOAD DATA INFILE 'persondata.txt' INTO TABLE persondata;
    

    默认情况下,当 LOAD 末尾没有提供列列表时 DATA INFILE 语句,输入行应包含一个字段 每个表列。

    如果您只想加载表格的某些列,请指定一个列 列表:

    LOAD DATA INFILE 'persondata.txt' INTO TABLE persondata (col1,col2,...);
    

    如果字段的顺序在 输入文件与表中列的顺序不同。 否则,MySQL 无法判断如何将输入字段与表匹配 列。

    您将包括“由'|'终止的字段;”最后导入以“|”分隔的数据符号。

    【讨论】:

    • 感谢 tron。我明白了,但插入后我有一些问题。在此表中,我还添加了“S.No”。但在检查过程中,我两次运行脚本。听说我只在 S.No(1,2,3,4--> 我运行脚本的第一次)(1,2,3,4,6,7,8,9-->第二次)中退出。请帮助这个为什么差距(5)?谢谢。
    • 在加载命令之后,您是否使用以下命令检查了警告:SHOW WARNINGS 以查看您的任何行是否有导入问题?
    【解决方案2】:

    希望这会有所帮助。

    create table [YOUR TABLE]  ( `S.NO` INT AUTO_INCREMENT, date DATETIME, name VARCHAR(50), buy VARCHAR(50), cast VARCHAR(50));
    Load data local infile 'test.txt' ignore into table  [YOUR TABLE] fields terminated by ',' lines terminated by '\n'(cast , date , name , buy);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-04-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-07
      • 2021-03-24
      • 2013-04-07
      • 1970-01-01
      相关资源
      最近更新 更多