将表上传到 MySQL。 包含 TEXT 和 \n\r 的列<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />我在 JMP 中有一个表,其中包含一些数字列、字符列、日期列和几列,其中包含大块文本(充满特殊字符、逗号、.
我想将此表上传到 MySQL,但我面临一些挑战。 我尝试过几种方法:
方法1 - 保存为csv,通过workbench/其他mysql工具上传
JMP 似乎没有将文本片段(特殊字符)正确编码到 csv 中,当我上传 csv 时,文本块中的一些字符被解释为不同的单元格,整行数据最终变得混乱。 我手动更正了“\n”和“\r”,但仍有一些其他字符编码不好,导致 csv 无法正确上传。
方法 2 - 通过 JMP“将表上传到数据库”上传
不幸的是,此选项仅允许自动(无数据列类型选择)上传新表。 这导致 JMP 将文本块定义为 CHAR (255),该文本块不够大,无法容纳我拥有的文本,因此会被截断。
我理想的解决方案:
- 我只需在我的架构中创建一个具有正确列和列定义的表。
- 然后,我将使用脚本将数据上传到预先存在的空(或不是!)表。
我一直在社区中查找,发现了一些代码片段可以帮助我开始编写脚本来执行上述操作。
那么三个问题:
- 转换为 csv 时我是否做错了什么,或者这只是 JMP 中需要解决的错误?
- 您还可以想到上传此数据集的任何其他想法/方法吗?
- 非常欢迎任何有关整理上述脚本的帮助!
提前致谢!
回复:将表上传到 MySQL。 包含 TEXT 和 \n\r 的列JMP 13(即将推出)在数据库集成(文件->数据库->保存表和文件->数据库->打开表)方面进行了多项改进。
回复:将表上传到 MySQL。 包含 TEXT 和 \n\r 的列似乎有效:我从这个表中制作了一个 CSV:

并且,经过几次错误的启动后,将其导入如下:
将文件“/home/c/Desktop/windowsShare/stories.csv”中的数据加载到以“,”结尾的表故事字段中,可选地用“””括起来,以“”结尾的行;
然后将数据转储为十六进制
从故事中选择十六进制(故事);
+------------------------------------------------ --------------------------------------------------+
|十六进制(故事)|
+------------------------------------------------ --------------------------------------------------+
删除了错误的开始...
| 7468697320697320612074776F 0D 6C696E652073746F7279 |
| 746869732069732061207468726565 0D 6C696E65 0D 73746F7279 | 73746F7279
| 6F6E65206C696E6572 |
+------------------------------------------------ --------------------------------------------------+
我将 CR (0D) 字符设为粗体。
我不是 mysql 专家;不知道mysql能否更好的处理数据中的列名。我使 mysql 表和 JMP 表具有相同的顺序以使其正常工作。
如果没有十六进制,就有点难以理解发生了什么:
从故事中选择*;
+--------+---------------------------------------- ------+--------+
|名称 |故事|等级 |
+--------+---------------------------------------- ------+--------+
删除了错误的开始
|名称 |故事| 0 |
故事线| 12 | 12
故事| 12 | 12
|弗雷德 |一艘班轮 | 99 | 99
+--------+---------------------------------------- ------+--------+
9 行一组(0.00 秒)
(这是 Linux shell 窗口中的输出)。CR 没有 LF(创建此数据表的方式)。将光标移动到行首,但不换行到新行...在行首键入。数据实际上在mysql表中,如十六进制所示。
最后,转储 CSV:
loadtextfile("$desktop/stories.csv",blob)
字符到 Blob(
“姓名、故事、年级~0D~0A凯蒂,~22这是一个二~0D线的故事~22,12 ~0D~0A路易丝,~22这是一个三~0D线~0D故事~22,12 ~0D~0A弗雷德,一行,99 ~0D~0A “,
“ascii~十六进制”
)
您可以看到 Windows 上的 JMP 在行尾使用 CRLF(粗体 ~0D~0A)。
回复:将表上传到 MySQL。 包含 TEXT 和 \n\r 的列看起来 mySQL 可以被告知如何导入 CSV:
php - 从 CSV 到 MySQL 的换行问题 - 代码日志
从 PHP 将上传的 CSV 导入 MySQL 表时正确的 LINES TERMINATED BY_php_帮酷编程问答
编辑:如果这是一个简单的答案,请发回使其工作的 mySQL 语法,谢谢!
回复:将表上传到 MySQL。 包含 TEXT 和 \n\r 的列怎么样:
1. 保存包含除长文本字段之外的所有字段的 .csv 文件
2.将.csv文件上传到MySQL
3. 从 JMP 内部循环遍历表并使用长文本字段更新 MySQL 中的表