將表上傳到 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 中的表