将带有二进制UUID的CSV导入MySQL工作台



我正试图将一个用Python生成的带有1000万行UUID的CSV文件导入MySQL工作台。

首先,我创建了一个MySQL表,其中binary(16)列标题为ID:

CREATE TABLE TT (
ID BINARY(16) PRIMARY KEY);

接下来,我使用uuid库和UUID:的二进制版本在Python中创建了一个1000万行的CSV文件

import pandas as pd
import uuid
ID = []
for i in range(10000000):
ID.append(uuid.uuid4().bytes)
Dict = {'ID':ID}
DF = pd.DataFrame(Dict)
DF.to_csv("Desktop/uuid_table.csv")

设置后,我尝试使用表数据导入向导将CSV文件导入MySQL工作台,但原始表中没有任何更改。该过程已完成,没有出现错误,但它显示"已导入0行"。

有人能帮我如何将这个CSV导入MySQL工作台吗?我做错了什么?非常感谢。

一个问题是,您的CSV持有二进制数据的pythonbytes表示,该表示不是SQL二进制数据,长度不是16。您可以编写十六进制表示。由于这是一个单列CSV,并且十六进制字母表中没有需要转义的字符,因此不需要任何像panda这样的中间字符来修复数据。

import uuid
with open("Desktop/uuid_table.csv", "w", newline="") as fileobj:
fileobj.write("IDrn")
for i in range(10000000):
fileobj.write(uuid.uuid4().hex + "rn")

现在您有一个没有索引的单列CSV。我不使用MySQL Workbench,但你想要它的

LOAD DATA INFILE 'Desktop/uuid_table.csv' INTO TABLE `TT` (@var1)
SET ID = UNHEX(@var1)

我认为导入向导可以让您选择一种格式。

最新更新