MySQL中导出CSV格式数据的SQL

MySQL中导出CSV格式数据的SQL语句样本如下:

Sql代码

select*fromtest_info

intooutfile'/tmp/test.csv'

fieldsterminatedby','optionallyenclosedby'"'escapedby'"'

linesterminatedby'\r\n';

select*fromtest_info

intooutfile'/tmp/test.csv'

fieldsterminatedby','optionallyenclosedby'"'escapedby'"'

linesterminatedby'\r\n';MySQL中导入CSV格式数据的SQL语句样本如下:

Sql代码

loaddatainfile'/tmp/test.csv'

intotabletest_info

fieldsterminatedby','optionallyenclosedby'"'escapedby'"'

linesterminatedby'\r\n';

loaddatainfile'/tmp/test.csv'

intotabletest_info

fieldsterminatedby','optionallyenclosedby'"'escapedby'"'

linesterminatedby'\r\n';里面最关键的部分就是格式参数

Sql代码

fieldsterminatedby','optionallyenclosedby'"'escapedby'"'

linesterminatedby'\r\n'

fieldsterminatedby','optionallyenclosedby'"'escapedby'"'

linesterminatedby'\r\n'这个参数是根据RFC4180文档设置的,该文档全称CommonFormatandMIMETypeforComma-SeparatedValues(CSV)Files,其中详细描述了CSV格式,其要点包括:

(1)字段之间以逗号分隔,数据行之间以\r\n分隔;

(2)字符串以半角双引号包围,字符串本身的双引号用两个双引号表示。

文件:test_csv.sql

Sql代码

usetest;

createtabletest_info(

idintegernotnull,

contentvarchar(64)notnull,

primarykey(id)

);

deletefromtest_info;

insertintotest_infovalues(2010,'hello,line

suped

seped

"

end'

);

select*fromtest_info;

select*fromtest_infointooutfile'/tmp/test.csv'fieldsterminatedby','optionallyenclosedby'"'escapedby'"'linesterminatedby'\r\n';

deletefromtest_info;

loaddatainfile'/tmp/test.csv'intotabletest_infofieldsterminatedby','optionallyenclosedby'"'escapedby'"'linesterminatedby'\r\n';

select*fromtest_info;

usetest;

createtabletest_info(

idintegernotnull,

contentvarchar(64)notnull,

primarykey(id)

);

deletefromtest_info;

insertintotest_infovalues(2010,'hello,line

suped

seped

"

end'

);

select*fromtest_info;

select*fromtest_infointooutfile'/tmp/test.csv'fieldsterminatedby','optionallyenclosedby'"'escapedby'"'linesterminatedby'\r\n';

deletefromtest_info;

loaddatainfile'/tmp/test.csv'intotabletest_infofieldsterminatedby','optionallyenclosedby'"'escapedby'"'linesterminatedby'\r\n';

select*fromtest_info;

文件:test.csv

Text代码

2010,"hello,line

suped

seped

""

end"

2010,"hello,line

suped

seped

""

end"

在Linux下如果经常要进行这样的导入导出操作,当然最好与Shell脚本结合起来,为了避免每次都要写格式参数,可以把这个串保存在变量中,如下所示:(文件mysql.sh)

Bash代码

#!/bin/sh

#Copyright(c)2010codingstandards.Allrightsreserved.

#file:mysql.sh

#description:Bash中操作MySQL数据库

#license:LGPL

#author:codingstandards

#email:[email protected]

#version:1.0

#date:2010.02.28

#MySQL中导入导出数据时,使用CSV格式时的命令行参数

#在导出数据时使用:select...from...[where...]intooutfile'/tmp/data.csv'$MYSQL_CSV_FORMAT;

#在导入数据时使用:loaddatainfile'/tmp/data.csv'intotable...$MYSQL_CSV_FORMAT;

#CSV标准文档:RFC4180

MYSQL_CSV_FORMAT="fieldsterminatedby','optionallyenclosedby'\"'escapedby'\"'linesterminatedby'\r\n'"

#!/bin/sh

#Copyright(c)2010codingstandards.Allrightsreserved.

#file:mysql.sh

#description:Bash中操作MySQL数据库

#license:LGPL

#author:codingstandards

#email:[email protected]

#version:1.0

#date:2010.02.28

#MySQL中导入导出数据时,使用CSV格式时的命令行参数

#在导出数据时使用:select...from...[where...]intooutfile'/tmp/data.csv'$MYSQL_CSV_FORMAT;

#在导入数据时使用:loaddatainfile'/tmp/data.csv'intotable...$MYSQL_CSV_FORMAT;

#CSV标准文档:RFC4180

MYSQL_CSV_FORMAT="fieldsterminatedby','optionallyenclosedby'\"'escapedby'\"'linesterminatedby'\r\n'"

使用示例如下:(文件test_mysql_csv.sh)

Bash代码

#!/bin/sh

./opt/shtools/commons/mysql.sh

#MYSQL_CSV_FORMAT="fieldsterminatedby','optionallyenclosedby'\"'escapedby'\"'linesterminatedby'\r\n'"

echo"MYSQL_CSV_FORMAT=$MYSQL_CSV_FORMAT"

rm/tmp/test.csv

mysql-p--default-character-set=gbk-t--verbosetest<<EOF

usetest;

createtableifnotexiststest_info(

idintegernotnull,

contentvarchar(64)notnull,

primarykey(id)

);

deletefromtest_info;

insertintotest_infovalues(2010,'hello,line

suped

seped

"

end'

);

select*fromtest_info;

--select*fromtest_infointooutfile'/tmp/test.csv'fieldsterminatedby','optionallyenclosedby'"'escapedby'"'linesterminatedby'\r\n';

select*fromtest_infointooutfile'/tmp/test.csv'$MYSQL_CSV_FORMAT;

deletefromtest_info;

--loaddatainfile'/tmp/test.csv'intotabletest_infofieldsterminatedby','optionallyenclosedby'"'escapedby'"'linesterminatedby'\r\n';

loaddatainfile'/tmp/test.csv'intotabletest_info$MYSQL_CSV_FORMAT;

select*fromtest_info;

EOF

echo"=====contentin/tmp/test.csv====="

cat/tmp/test.csv

#!/bin/sh

./opt/shtools/commons/mysql.sh

#MYSQL_CSV_FORMAT="fieldsterminatedby','optionallyenclosedby'\"'escapedby'\"'linesterminatedby'\r\n'"

echo"MYSQL_CSV_FORMAT=$MYSQL_CSV_FORMAT"

rm/tmp/test.csv

mysql-p--default-character-set=gbk-t--verbosetest<<EOF

usetest;

createtableifnotexiststest_info(

idintegernotnull,

contentvarchar(64)notnull,

primarykey(id)

);

deletefromtest_info;

insertintotest_infovalues(2010,'hello,line

suped

seped

"

end'

);

select*fromtest_info;

--select*fromtest_infointooutfile'/tmp/test.csv'fieldsterminatedby','optionallyenclosedby'"'escapedby'"'linesterminatedby'\r\n';

select*fromtest_infointooutfile'/tmp/test.csv'$MYSQL_CSV_FORMAT;

deletefromtest_info;

--loaddatainfile'/tmp/test.csv'intotabletest_infofieldsterminatedby','optionallyenclosedby'"'escapedby'"'linesterminatedby'\r\n';

loaddatainfile'/tmp/test.csv'intotabletest_info$MYSQL_CSV_FORMAT;

select*fromtest_info;

EOF

echo"=====contentin/tmp/test.csv====="

cat/tmp/test.csv

相关推荐