首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在mysqlimport、换行符和字符编码上(我认为)

在mysqlimport、换行符和字符编码上(我认为)
EN

Stack Overflow用户
提问于 2009-05-14 14:36:56
回答 4查看 1.2K关注 0票数 2

首先,我要透露的是:我不是Linux管理员,我的Linux管理员也不是程序员。

也就是说,我们有一个cronjob,它运行mysqlimport命令来导入每天生成的文本文件。我不能控制或参与这个文件是如何创建的。通过反复试验,我们发现文本文件是在Windows机上生成的,因此对于lines-terminated-by参数,我们必须指定\r\n。上周它停止了正常工作,我们确定这是因为文件现在是在Linux中生成的,所以我们将其更改为\n。我的理解(不完全清楚)是,它取决于生成文本文件的人,而文本文件决定了所使用的平台和编码。

我们有一个执行mysqlimport命令的shell脚本。当我们提供正确的编码时,一切都会完美地工作。但是,既然我们不知道谁将首先创建文本文件,那么有没有一种方法可以确定编码是什么并实现正确的换行字符?(这里的“编码”是恰当的术语吗?)

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2009-05-14 14:58:36

我认为你可以在linux上使用dos2unix或unix2dos命令在“Windows”和Linux编码之间进行转换。因此,您不必检测所使用的编码,只需运行命令以确保文件具有正确的编码即可。

这取决于实用程序的版本,但通常命令的执行方式如下所示:

代码语言:javascript
复制
dos2unix input.txt output.txt
dos2unix input.txt > output.txt
票数 2
EN

Stack Overflow用户

发布于 2009-05-14 14:58:16

在调用mysqlimport之前,您需要对mysqlimport正在读取的文件运行dos2unix命令。dos2unix会将Windows行结尾"\r\n“转换为*nix行结尾"\n”如果提供的文件是在*nix系统上生成的,则该文件保持不变。

这样,您就可以确保提供给shell脚本的行尾格式始终相同。

诚挚的问候

票数 2
EN

Stack Overflow用户

发布于 2009-05-14 14:57:30

fromdosdos2unixtofrodos是三个有时安装在Linux系统上的程序。您可以使用其中之一始终将格式转换为unix行尾(\n)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/863695

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档