![精通Neo4j](https://wfqqreader-1252317822.image.myqcloud.com/cover/113/47216113/b_47216113.jpg)
2.5.2 获取CSV文件
下面介绍几种主流关系数据库导出CSV文件的方法。
2.5.2.1 SQL Server导出CSV文件
打开一个查询窗口,输入SQL语句查询出需要导出的数据列表,如图2-91所示。
![](https://epubservercos.yuewen.com/84FE89/26581284601284906/epubprivate/OEBPS/Images/Figure-P98_85404.jpg?sign=1738953679-P586MMu3pEXRjvzLl64F2beQ1ny24R0W-0-d152a496f3612409f728e6c9b94401e9)
图2-91 SQL查询结果
在查询的结果栏目中,复制所有查询出来的数据。右击,在弹出的快捷菜单中选择“将结果另存为”命令,如图2-92所示。
![](https://epubservercos.yuewen.com/84FE89/26581284601284906/epubprivate/OEBPS/Images/Figure-P98_85415.jpg?sign=1738953679-nfQiLD3Oifql5clF3IJ9Qghwx5FuQRfU-0-b5e09df4e4352f468e5484fb7e72245e)
图2-92 将查询结果另存为
这里可以选择保存为CSV文件或txt文件,我们选择CSV文件,如图2-93所示,可以用Excel打开CSV文件来查看CSV文件的内容。
![](https://epubservercos.yuewen.com/84FE89/26581284601284906/epubprivate/OEBPS/Images/Figure-P99_85426.jpg?sign=1738953679-EVRAqMhGyolTLPstHxwFi3NAygqT3qIq-0-9b45e7c767a0ecb9aa257e994a7ca996)
图2-93 保存CSV文件
2.5.2.2 MySQL导出CSV文件
MySQL支持将查询结果直接导出为CSV文本格式,在使用select语句查询数据时,在语句后面加上导出指令即可,格式如下:
● into outfile <导出的目录和文件名>:指定导出的目录和文件名。
● fields terminated by <字段间分隔符>:定义字段间的分隔符。
● optionally enclosed by <字段包围符>:定义包围字段的字符(数值型字段无效)。
● lines terminated by <行间分隔符>:定义每行的分隔符。
以下是一个使用MySQL导出CSV文件的例子。
【程序2-18】MySQL导出CSV文件
![](https://epubservercos.yuewen.com/84FE89/26581284601284906/epubprivate/OEBPS/Images/Figure-P99_101380.jpg?sign=1738953679-vWEtbnoH5cXJ57WUCk6lOEuXbnDupIep-0-858fa6f7d383736d026274d78d40956c)
这条指令执行完后,会把mydatatable表中部分匹配查询条件的记录导出到E1.csv文件中。其中每个字段以逗号分隔,字段内容是以双引号包围的字符串,每条记录使用\r\n换行,如图2-94所示。
![](https://epubservercos.yuewen.com/84FE89/26581284601284906/epubprivate/OEBPS/Images/Figure-P99_85456.jpg?sign=1738953679-Khl8ypcNNEnS9JREZiFEfcTQu8qdCzQA-0-f85854c40a2520d41783495f247d32cf)
图2-94 CSV文件格式
2.5.2.3 Oracle导出CSV文件
可以使用sqlplus导出CSV文件,这是比较方便的一种方式,当然读者也可以考虑采用其他方式导出。首先创建spool.sql文件,内容如程序2-19所示。
【程序2-19】创建spool.sql文件
![](https://epubservercos.yuewen.com/84FE89/26581284601284906/epubprivate/OEBPS/Images/Figure-P100_101382.jpg?sign=1738953679-6ZKMA7uTlnfiehiyRiJL64xfkHXC22f6-0-c2310404656045f3cf18bcab20ed2175)
然后,运行sqlplus命令:
![](https://epubservercos.yuewen.com/84FE89/26581284601284906/epubprivate/OEBPS/Images/Figure-P100_85527.jpg?sign=1738953679-eV1jTnHTTwpCIZiDzwvTQW6jWJtQljWg-0-602411e2a39fda2718ee0e8cabc61123)
这样就可以从Oracle将lfc_ bl表中的数据导出到E:\lfc_ bl.csv文件了。
对于spool.sql文件的指令详细解析请参考表2-2。
表2-2 sqlplus命令及含义
![](https://epubservercos.yuewen.com/84FE89/26581284601284906/epubprivate/OEBPS/Images/Figure-T100_101381.jpg?sign=1738953679-zoJ1ztnDBD9HaKqIQej7v29ZwPq7bkvd-0-c58403fd854520146d18967dd8caefc1)
2.5.2.4 CSV内容格式注意事项
Neo4j对CSV文件的格式是有要求的,因此在讨论如何导入CSV之前,我们先列举一些CSV文件内容格式常见的错误。读者可以使用文本编辑器打开自己的CSV文件,查看是否出现这些错误。
CSV文件内容格式常见错误如下:
(1)在CSV文件开始处存在BOM字节顺序标记(2个UTF-8字符),如果存在,则删除。
(2)文件内存在非文本类型的字符,如果存在,则删除。
(3)存在不规则换行符,如混合Windows和UNIX换行符,如果存在,则需要确保它们一致,最好选择UNIX风格。
(4)CSV文件头与数据不一致(内容相比头缺少列或多出列,头中有不同的分隔符),如果存在此情况,则需要修复头部。
(5)带引号和不带引号的文本字段中出现换行符,如果存在,则需要删除换行符。
(6)存在杂散的引号,非文本中存在独立双引号或单引号,如果存在,则需要转义或删除杂散引号。