Cam*_*oft 54 mysql csv load-data-infile
我有一个包含11列的CSV文件,我有一个包含9列的MySQL表.
CSV文件如下所示:
col1, col2, col3, col4, col5, col6, col7, col8, col9, col10, col11
Run Code Online (Sandbox Code Playgroud)
和MySQL表看起来像:
col1, col2, col3, col4, col5, col6, col7, col8, col9
Run Code Online (Sandbox Code Playgroud)
我需要将CSV文件的1-8列直接映射到MySQL表的前8列.然后,我需要跳过CSV文件中的下两列,然后将CSV文件的第11列映射到MySQL表的第9列.
目前我正在使用以下SQL命令:
LOAD DATA LOCAL INFILE 'filename.csv' INTO TABLE my_table
FIELDS TERMINATED BY ','
ENCLOSED BY ''
LINES TERMINATED BY '\n'
Run Code Online (Sandbox Code Playgroud)
但是上面的代码将CSV文件的前9列映射到MySQL表中的9列.
gra*_*ukt 84
您还可以通过将输入值分配给用户变量而不将变量分配给表列来丢弃输入值:
LOAD DATA INFILE 'file.txt'
INTO TABLE t1 (column1, @dummy, column2, @dummy, column3);
Run Code Online (Sandbox Code Playgroud)
小智 5
与awk交易。
cat file.txt |awk '{print $1,$2,$5...}'>new_file.txt
Run Code Online (Sandbox Code Playgroud)
step2.load到mysql中。
load data local infile 'new_file' into table t1(...)
Run Code Online (Sandbox Code Playgroud)
下面的方法很简单,但是在较低版本的mysql中是不允许的。
LOAD DATA INFILE 'file.txt'
INTO TABLE t1 (column1, @dummy, column2, @dummy, column3);
Run Code Online (Sandbox Code Playgroud)