我已经在phpMyAdmin中导出了一个带有四列的csv文件,其中包含以下选项:
Columns separated with: ,
Columns enclosed with: "
Columns escaped with: "
Lines terminated with: AUTO
现在我要将此文件导入到包含17列的表中!? 因此,只会填充四列,其他列将保持为空。
答案 0 :(得分:1)
您可以在从文件导入数据时指定列名,并使用用户变量通过在导入表中的数据时将其分配给用户变量来丢弃输入值。
您还可以通过将输入值分配给用户变量来丢弃输入值 而不是将变量分配给表列:
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) ";