导入的 csv 文件的列少于我要导入的 table?

Import csv file with less columns than the table to which I'm importing?

我已经在 phpMyAdmin 中使用这些选项导出了一个包含四列的 csv 文件:

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

现在我想将此文件导入到具有 17 列的 table 中!? 因此只会填充四列,其他列将留空。

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

AS PER MYSQL DOCUMENTATION

You can also discard an input value by assigning it to a user variable and not assigning the variable to a table column:

LOAD DATA INFILE 'file.txt' INTO TABLE t1 (column1, @dummy, column2, @dummy, 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。

EDIT - 让我们用例子来理解:-

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

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

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

table 结构:table名称 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;

传递null值将使col-1取一个自增值。 使用 SET 您可以将值分配给那些在 csv 中不可用且不为空的列。

更多信息refer here

试试这个:

 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) ";