gpt4 book ai didi

mysql - dbplyr 字符列作为 TEXT 而不是 VARCHAR 到数据库

转载 作者:行者123 更新时间:2023-11-29 03:15:59 24 4
gpt4 key购买 nike

假设我正在使用 starwars 数据集,并尝试在 Mysql 数据库中创建表(使用 copy_to)

    library(tidyverse)
data <- starwars %>%
select(name, skin_color)

data

# A tibble: 87 x 2
name skin_color
<chr> <chr>
1 Luke Skywalker fair
2 C-3PO gold
3 R2-D2 white, blue
4 Darth Vader white
5 Leia Organa light
6 Owen Lars light
7 Beru Whitesun lars light
8 R5-D4 white, red
9 Biggs Darklighter light
10 Obi-Wan Kenobi fair
# … with 77 more rows

conn <- DBI::dbConnect(RMariaDB::MariaDB(),
host = "myhost",
user = "myuser",
password = "mypass",
db = "mydb")

copy_to(conn, data, temporary = FALSE, overwrite = TRUE)

问题是字符列被创建为 TEXT 列,但正确的定义应该是 VARCHAR。

DESC table data

`data` (
`name` TEXT NULL,
`skin_color` TEXT NULL
)
COLLATE='utf8_general_ci'
ENGINE=InnoDB
;

如何强制使用 varchar 而不是 text?

最佳答案

这可能不是您理想的解决方案,但您始终可以尝试先在 MariaDB 中创建目标表,然后再运行 R 脚本。然后,调用 copy_to 并将 overwrite 设置为 false:

来自 MariaDB:

CREATE TABLE data (
name varchar(255),
skin_color varchar(255)
);

来自 R:

copy_to(conn, data, temporary=FALSE, overwrite=FALSE)

关于mysql - dbplyr 字符列作为 TEXT 而不是 VARCHAR 到数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56355920/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com