首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Mysql "SOURCE <file>“导入UTF8转储给出问号。

问Mysql "SOURCE <file>“导入UTF8转储给出问号。
EN

Stack Overflow用户
提问于 2015-06-07 11:36:13
回答 2查看 1.4K关注 0票数 1

我已经在网上搜索了一个解决方案,而我在网上找到的解决方案在这里似乎都没有用。

我的问题是,我有一个MySQL转储(SQL文件),其中包含以UTF8编码保存的希伯来文本值,当我使用"source [file]“导入它时,它将希伯来字符保存为问号(?)。

现在,当我查看SQL文件(cat文件)时,我可以正确地看到希伯来字符。

即使我尝试从"cat“提供的输出复制和粘贴SQL命令到MySQL命令行,它也能工作。

只有当我使用"SOURCE [file]“(我需要它,因为它是一个巨大的文件)时,它才会失败。

我还尝试了以下几点:

  1. mysql -uroot -p[pass] --default-character-set=utf8,然后是“设置名称utf8”,然后是“源文件”--给出问号。
  2. 登录到mysql客户端,然后执行"SET NAMES utf8“、"SET COLLATE utf8_bin”(这是DB中所有表的设置)--给出问号。
  3. 前面设置的CREATE DATABASE [db_name] DEFAULT CHARACTER SET UTF8 (上文第2节)-给出问号。
  4. mysql -uroot -p[pass] --default-character-set=utf8 [db_name] < [file.sql] -给出问号。
  5. set character_set_filesystem utf8,然后运行source [file] -给出问号。

所有这些都不能正常工作,唯一起作用的是如果我直接从cat输出到mysql命令行执行copy+paste,由于文件的长度(几百MB),这不是一个选项。

帮帮忙,谢谢!

EN

回答 2

Stack Overflow用户

发布于 2015-06-07 11:52:30

将文件作为< file.sql读取时会出现问题。

正如关于使用MySQL in batch mode的文档中所述,如果您在Windows下运行mysql,并且在文件< file.sql中有一些特殊字符可能会导致问题,请使用以下方法:

mysql -e“file.sql”dbname .-默认-字符集=UTF8 8

票数 1
EN

Stack Overflow用户

发布于 2015-06-07 14:21:22

好的,我通过创建一个PHP“导入”脚本来解决这个问题。

首先,我将整个SQL文件分成两个文件: structure (创建表和结构的命令)和data。

然后,我使用structure.sql运行整个mysql_query文件,并获取数据文件,用"\n“来获取所有插入的分隔行,然后使用循环和mysql_query运行它们。

我甚至不需要包括“设置名称utf8",一旦我删除了这一行,一切都工作得很好。

我知道这不是一个理想的解决方案,但这是一个对我有效的解决方案。

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

https://stackoverflow.com/questions/30693050

复制
相关文章

相似问题

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