簡體   English   中英

將 csv 文件導入 mysql docker 容器

[英]importing csv file into mysql docker container

> docker exec -it craig bash  
> mysql -u root -p --local-infile 
> use craigslist;
> 
> LOAD DATA LOCAL INFILE 'C:/Users/hank/Desktop/craigs/data.csv' 
> INTO TABLE books_mags  
> FIELDS TERMINATED BY ',' 
> LINES TERMINATED BY '\n'
> IGNORE 1 ROWS;

我的桌面上有一個 csv 文件,我希望將其輸入到 MySQL 表中。 但是我很難弄清楚文件路徑錯誤。

錯誤 2 (HY000):找不到文件“C:/Users/hank/Desktop/craigs/data.csv”(操作系統 errno 2 - 沒有這樣的文件或目錄)

我不斷收到此錯誤。

我正在為 mySQL 使用 windows 10 和 docker 容器。

如何將我的 csv 放入 MYSQL?

目錄路徑C:/Users/hank/Desktop/craigs/data.csv在您的主機系統 (Windows) 中。 除非您安裝了卷,否則 docker 的文件系統將完全不同。 訪問容器內文件的兩種方式

第一種方法

啟動容器時必須掛載卷

docker run -d image_name -v "C:/Users/hank/Desktop/craigs/:/data"

這並不總是推薦的。

第二種方法

使用docker cp將文件從主機復制到容器

See 'docker cp --help'.

Usage:  docker cp [OPTIONS] CONTAINER:SRC_PATH DEST_PATH|-
    docker cp [OPTIONS] SRC_PATH|- CONTAINER:DEST_PATH

Copy files/folders between a container and the local filesystem

它類似於使用scp命令將文件復制到遠程服務器。

1-讓你的CSV進入你的電腦

2-將它們加載到您的容器中,要手動將它們放在那里,您可以使用:

docker cp file container:/<container-directory>

3-輸入您的容器並執行

> sudo docker exec -it jose_signot_mysql bash
container> mysql -uUser -pPassword
mysql> LOAD DATA LOCAL INFILE '/path/in/container/to/file' into table FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n' IGNORE 1 ROWS;

或使用內聯密碼從外部執行腳本(安全問題)

  sudo docker exec jose_signot_mysql bash mysql -u<User> -p<Password> <databaseName> -e "LOAD DATA LOCAL INFILE '/path/in/container/to/file' into table <tableName> FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n' IGNORE 1 ROWS;"

如果您在設置secure-file-priv時遇到問題,請在運行時在您的實例中檢查:this https://github.com/docker-library/mysql/issues/447#issuecomment-403393323

為了導入 csv 有兩種解決方案:

管理用於管理關系數據庫內容的工具(MySql、Postgresql 等)

下面是 docker-compose.yml 中管理員的配置。 然后您可以通過輸入 URL (如“ip_addd_server:4041”)來 go 到管理員,然后輸入數據庫憑據(主機、密碼、方言)並登錄。

 adminer:
  container_name: adminer
  image: adminer
  restart: always
  ports:
   - 4042:8080
  networks:
  - main-network
  depends_on:
   - db  

簡單地附加到容器並通過此命令的另一種解決方案。

docker exec -it db bin/bash // attach to container 

然后您可以使用正確的用戶登錄並通過 CSV 文件導入數據。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM