当我导入以下.sql文件(插入4条记录)
时SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;
CREATE TABLE IF NOT EXISTS `sentences` (
`jp` text character set utf8 collate utf8_unicode_ci,
`eng` text character set utf8 collate utf8_unicode_ci,
`reading` text character set utf8 collate utf8_unicode_ci,
`query` varchar(50) character set utf8 collate utf8_unicode_ci default NULL,
`patternIDs` varchar(100) character set utf8 collate utf8_unicode_ci default NULL,
`hasImage` tinyint(1) NOT NULL,
`imageURL` varchar(100) character set utf8 collate utf8_unicode_ci NOT NULL,
`id` int(11) NOT NULL auto_increment,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=eucjpms;
INSERT INTO `sentences` (`jp`, `eng`, `reading`, `query`, `patternIDs`, `hasImage`, `imageURL`, `id`) VALUES
('ムーリエルは20歳になりました。', 'Muiriel is 20 now.', 'はにぜろさいになりました。', 'ムーリエル', '64', 0, 'none', 1),
('すぐに戻ります。', 'I will be back soon.', 'すぐにもどります。', 'すぐ', '4', 1, 'http://ts1.mm.bing.net/images/thumbnail.aspx?q=959017328936&id=b33b9daf539756a8b0b2364f63088008', 2),
('すぐに諦めて昼寝をするかも知れない。', 'I may give up soon and just nap instead.', 'すぐにあきらめてひるねをするかもしれない。', '昼寝', '19', 1, 'http://ts1.mm.bing.net/images/thumbnail.aspx?q=888895375610&id=5debb6afed90989674d447f9493b4a1d', 3),
('ログアウトするんじゃなかったよ。', 'I shouldn\'t have logged off.', 'ログアウトするんじゃなかったよ。', 'ログアウト', '16', 1, 'http://ts1.mm.bing.net/images/thumbnail.aspx?q=846535990996&id=4e0ad521154e2e7456330af87b24ee71', 4);
然后浏览句子表,所有日语句子都可以查看没有UTF-8编码的任何问题。但是,当我导入以下文件时(完全相同的东西,唯一的大小差异,插入约73000条记录,而不是4条)
SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;
CREATE TABLE IF NOT EXISTS `sentences` (
`jp` text character set utf8 collate utf8_unicode_ci,
`eng` text character set utf8 collate utf8_unicode_ci,
`reading` text character set utf8 collate utf8_unicode_ci,
`query` varchar(50) character set utf8 collate utf8_unicode_ci default NULL,
`patternIDs` varchar(100) character set utf8 collate utf8_unicode_ci default NULL,
`hasImage` tinyint(1) NOT NULL,
`imageURL` varchar(100) character set utf8 collate utf8_unicode_ci NOT NULL,
`id` int(11) NOT NULL auto_increment,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=eucjpms;
INSERT INTO `sentences` (`jp`, `eng`, `reading`, `query`, `patternIDs`, `hasImage`, `imageURL`, `id`) VALUES
('ムーリエルは20歳になりました。', 'Muiriel is 20 now.', 'はにぜろさいになりました。', 'ムーリエル', '64', 0, 'none', 1),
('すぐに戻ります。', 'I will be back soon.', 'すぐにもどります。', 'すぐ', '4', 1, 'http://ts1.mm.bing.net/images/thumbnail.aspx?q=959017328936&id=b33b9daf539756a8b0b2364f63088008', 2),
('すぐに諦めて昼寝をするかも知れない。', 'I may give up soon and just nap instead.', 'すぐにあきらめてひるねをするかもしれない。', '昼寝', '19', 1, 'http://ts1.mm.bing.net/images/thumbnail.aspx?q=888895375610&id=5debb6afed90989674d447f9493b4a1d', 3),
('ログアウトするんじゃなかったよ。', 'I shouldn\'t have logged off.', 'ログアウトするんじゃなかったよ。', 'ログアウト', '16', 1, 'http://ts1.mm.bing.net/images/thumbnail.aspx?q=846535990996&id=4e0ad521154e2e7456330af87b24ee71', 4)
('先生に質問したら、すぐに答えてくれました。', 'When I asked a question to my teacher, he/she immediately answered it.', 'せんせいにしつもんしたら、すぐにこたえてくれました。', '先生', '64, 189', 1, 'http://ts1.mm.bing.net/images/thumbnail.aspx?q=889488746606&id=53a411907232964b30b9ebde03093a66', 73660),
('薬を飲んだら、すぐになおりました。', 'I took a medicine, and soon recovered.', 'くすりをのんだら、すぐになおりました。', '薬', '19, 64, 189', 1, 'http://ts2.mm.bing.net/images/thumbnail.aspx?q=934254550695&id=4400863ae021a4827dd7f9f7380fc2a2', 73661);
我看不到日文字符。这是为什么?为什么phpMyAdmin在导入更大的.sql文件时会出现编码问题?谢谢,伙计们!
答案 0 :(得分:2)
以下是一些可能有用的建议。
我建议你确认你能够将23兆字节的文件发布到服务器上。 PHP配置文件具有发布大小的限制设置。
我还建议你确认没有命中php max执行时间并导致导入提前完成。
也许您可以从命令行
导入SQL文件mysql -u {username} -p{password} -h {serverHost} {databaseName} < {fileName}.sql
答案 1 :(得分:2)
使用的语言和编码可能会产生很多困难。 http://www.herongyang.com/PHP-Chinese/专门针对中国问题提供了宝贵的信息来源,许多讨论也适用于包括日语在内的任何Unicode。
例如,Heron Yang给出了一个可能的流程:
H1。键序列 - &gt;来自键盘(文本编辑器) - &gt;
H2。 HTML文档 - &gt; (Web服务器) - &gt;
H3。 HTTP响应 - &gt; (Internet TCP / IP连接) - &gt;
H4。 HTTP响应 - &gt; (网络浏览器) - &gt;
H5。屏幕上的视觉角色
基本上你需要确保导入过程(和输出过程)中的每一步都没有问题。第一步是Plebsori指出的“garbled data on the phpmyadmin wiki”。不幸的是,wiki说明了一些问题,但我认为不是解决方案。
我首先检查两个.sql文件的编码是否完全相同。要测试,您可以使用Notepad ++编辑73,000条目文件,并删除除前四行之外的所有文件。某些文本编辑器可能会在保存过程中更改编码,使两个文件的编码不同,即使它们看起来完全相同。因此,请确保以完全相同的方式保存两个文件。对于中文,我经常使用Notepad ++来更改文件的编码。确保使用相同的编码保存.sql文件。编码非常重要,这就是为什么notepad ++将它作为菜单栏上的菜单之一。
文件可能出现的另一个问题是文本流开头的BOM标记。 http://en.wikipedia.org/wiki/Byte-order_mark。这个不可见标记是PHPmyAdmin可用于确定转换语言的标记。我再次使用notepad ++来保证BOM存在。 (编码菜单)。您也可以使用因为复制/粘贴可能会更改编码(TextFX&gt; TextFX Viz设置&gt;也可以在unicode中进行Viz Copy-Cut)。
最后,链中还有很多链接。好的一点是,一旦你弄清楚如何在保留语言的同时正确地输入和输出数据,那么以后再做一次就可以非常简单。顺便说一句,如果您尝试编码提示我建议并验证文件格式不是问题的根源,那么有一些技巧可以导入数据。你可以将UTF8转换为ascii(看起来像垃圾字符),导入它,然后将其转换回你想要的sql编码。
答案 2 :(得分:0)
您达到服务器时间限制/大小限制,并且phpmyadmin足够智能(或不能)继续停止(大约),因为编码命令位于文件的开头,第二个连接开始时,它没有任何编码设置 解决方案:要么每隔几百行输入编码命令,要么使用文件导入
在Ubunto中导入文件:
sudo mysql -u [user name] -p [database name] < [sql file name]
[ubunto root password]
[mysql password]