Mysql AWS RDS+进入输出文件

Mysql AWS RDS+进入输出文件,mysql,csv,amazon-web-services,dump,rds,Mysql,Csv,Amazon Web Services,Dump,Rds,我理解,在处理RDS时,我们不能进行文件输入输出 根据我的研究,我尝试了以下几点: mysql -uusername -ppassword -hhost -default-character-set=utf8 dbname < select.sql | sed -e 's/\t/,/g' > test.csv mysql -uusername -ppassword -hhost -default-character-set=utf8 dbname < select.sql |

我理解,在处理RDS时,我们不能进行文件输入输出

根据我的研究,我尝试了以下几点:

mysql -uusername -ppassword -hhost -default-character-set=utf8 dbname < select.sql | sed -e 's/\t/,/g' > test.csv

mysql -uusername -ppassword -hhost -default-character-set=utf8 dbname < select.sql | perl -F"\t" -lane 'print join ",", map {s/"/""/g; /^http://\d.+$/ ? $_ : qq("$_")} @F ' > test.csv
出于某种原因,如果我将select.sql中的select查询限制为某个数字,它会给出正确的结果,并且所有阿拉伯语单词都完好无损,但一旦我将限制增加1,编码就会变得混乱,所有阿拉伯语单词都变成了垃圾字符

我已经检查了我正在运行的CentOS服务器的语言环境是否设置为UTF8,我还检查了数据是否正常,没有任何问题


知道为什么会发生这种情况吗?

显然,有一个列承载了一些BLOB数据类型的内容,这可能是由于数据的长度和混合字符,在将其转储到csv时导致编码混乱,由于未使用字段而丢弃字段最终解决了问题。

一如既往,调试的关键是解决问题。运行SQL并将其输出到没有sed或perl管道的文件中。对成功的N行执行此操作,然后对不成功的N+1行执行此操作,并区分这两个文件。它们是完全不同的,还是最后一行被破坏了?在十六进制编辑器中查看它们,看看您是否能够发现垃圾字符实际上是什么。仔细查看该额外行中的值;数据库中的文本是否已经混乱?在这个过程中的某个地方,你可能会发现一个例子,我们可以在这里检查,而不是猜测,我已经按照你之前的建议做了,diff结果实际上是打印了很多垃圾字符,区别不仅仅是额外的N+1行,所以我现在想知道这是否与数据有关,但从一些mysql应用程序上检查数据看不出问题所在。我已经设法解决了这个问题问题是,通过使用十六进制编辑器,我能够看到差异,然后看到差异。谢谢这是个好消息!如果你认为解决方案可能会帮助其他人在未来,请考虑,所以这个帖子并没有显示出没有答案。