使用比我导入的表少的列导入csv文件?

时间:2015-05-17 23:07:04

标签: mysql sql csv phpmyadmin load-data-infile

我已经在phpMyAdmin中导出了一个带有四列的csv文件,其中包含以下选项:

Columns separated with:  ,
Columns enclosed with:   "
Columns escaped with:    "
Lines terminated with:   AUTO

现在我要将此文件导入到包含17列的表中!? 因此,只会填充四列,其他列将保持为空。

2 个答案:

答案 0 :(得分:1)

您可以在从文件导入数据时指定列名,并使用用户变量通过在导入表中的数据时将其分配给用户变量来丢弃输入值。

AS PER MYSQL DOCUMENTATION

  

您还可以通过将输入值分配给用户变量来丢弃输入值   而不是将变量分配给表列:

     

LOAD DATA INFILE' file.txt' INTO表t1(第1栏,@ dummy,   column2,@ idy,column3);

LOAD DATA INFILE 'filename.csv'  
INTO TABLE sqlTable(column1, column2, column3, column4, @NotInsert2, @NotInsert2... till @NotInsert13);
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n'

因此,在您的情况下,只需指定四个列名称,并使用任何用户变量而不是其他列名称,以便列表中的列总数将等于17.

编辑 - 让我们了解一下示例: -

考虑我们必须加载包含以下内容的文件: 文件名:example.csv

col-2,col-3,col-4
a,2,3
b,4,5
c,6,7

案例: - 当csv文件的列数少于目标表

表结构:tablename col-1 col-2 col-3 col-4

考虑一下,col-1是自动递增的,不在csv中提供。

LOAD DATA INFILE ‘path/to/example.csv’ 
INTO TABLE tablename 
FIELDS TERMINATED BY ‘,’ 
LINES
TERMINATED BY ‘\n’ 
IGNORE 1 LINES (col-2,col-3,col-4) set col-1=null;

传递空值将使col-1采用自动增量值。 使用SET,您可以为那些在csv中不可用且不为空的列分配值。

更多信息 refer here

答案 1 :(得分:0)

试试这个:

 LOAD DATA LOCAL  INFILE 'XYZ.csv'
     INTO TABLE tickets  
FIELDS  terminated by ',' 
ENCLOSED BY '\"'  lines terminated by '\n' IGNORE 1 LINES 
    (column1, column2, column3, column4)(choose your data columns) ";