mysql匯入格式化資料 MySQL匯入格式化資料

2021-10-17 22:10:29 字數 3849 閱讀 1543

在有些場景下,我們需要把一批特定格式的資料匯入到mysql資料庫中,做法有很多,使用shell指令碼、python都可以,今天來介紹兩個更便捷的命令,mysqlimport 和 load data

mysqlimport

使用方法

mysqlimport [options] db_name textfile1 [textfile2 ...]

# db_name 對應資料庫名稱

# textfile 檔名,對應要插入的資料庫表名

# 比如:mysqlimport a8 campaign.txt 會把campaign.txt中的資料插入到a8資料庫中的campaign表

注意:campaign.txt檔案必須在/usr/local/mysql/var/a8/目錄下,即資料庫所在目錄

如果不在對應的目錄下,會返回以下錯誤:

mysqlimport -uroot -p123456 -hlocalhost -p3306 a8 campaign.txt

/usr/local/mysql/bin/mysqlimport: error: file '/usr/local/mysql/var/a8/campaign.txt' not found (errcode: 2), when using table: campaign

常用選項

--columns=id,name,creator...

# 對應的資料表列名,定義被匯入檔案中的每一列對應的資料庫表列名

--fields-terminated-by=

# 檔案欄位以什麼分隔,引數為字串,預設為\t

--fields-enclosed-by=

# 資料域用什麼符號擴起來,預設為空,一般可以是雙引號、括號等

--fields-optionally-enclosed-by=

# 資料域可以用什麼符號括起來,因為為只有部分資料用這些符號括起來

--fields-escaped-by=

# 轉義字元,引數為字元,預設為\

--lines-terminated-by=

# 資料行以什麼結束,引數為字串,windows預設為\r\n

--user=user_name 或 -u user_name

--password=[password] 或 -p[password]

--host=host_name 或 -h hostname

--port=port_num,或 -p port_num

# 定義使用者名稱、密碼、mysql伺服器位址和用於連線的tcp/ip埠號,預設為mysql預設埠3306

--ignore-lines=n

# 忽視資料檔案的前n行,因為很多資料檔案前面有表頭

--delete -d

# 在把檔案中的資料插入前刪除表中原先的資料

--local -l

# 指定從客戶端電腦讀入資料檔案,否則從伺服器電腦讀取

--lock-tables -l

# 處理文字檔案前鎖定所有表以便寫入,確保所有表在伺服器上保持同步

--protocol=

使用的連線協議

--force -f

#忽視錯誤。例如,如果某個文字檔案的表不存在,繼續處理其它檔案,不使用--force,如果表不存在則mysqlimport退出

--compress -c

# 壓縮在客戶端和伺服器之間傳送的所有資訊(如果二者均支援壓縮)

--silent,-s

# 沉默模式,只有出現錯誤時才輸出

--socket=path,-s path

# 當連線localhost時使用的套接字檔案(為預設主機)

--verbose,-v

# 冗長模式。列印出程式操作的詳細資訊。

--version,-v

# 顯示版本資訊並退出。

load data

使用方法

mysql> load data [low_priority] [local] infile 'file_name txt' [replace | ignore]

into table tbl_name

[fields]

[terminated by '\t']

[optionally] enclosed by '']

[escaped by '\' ]]

[lines terminated by 'n']

[ignore number lines]

[(id,name,creator)]

說明:load data infile語句是將文字資料匯入到資料表中。使用這個命令之前,mysqld程序(服務)必須已經在執行。使用前請確保有檔案的讀取許可權

mysql> load data low_priority infile "/home/root/data.sql" into table campaign;

mysql> load data low_priority infile "/home/root/data.sql" replace into table campaign;

4、分隔符

1)fields關鍵字指定了檔案欄位的分割格式,如果用到這個關鍵字,mysql剖析器希望看到至少有下面的乙個選項:

terminated by:分隔符,欄位是以什麼字元作為分隔符

enclosed by:字段括起字元,例:` "周麗","10","學習很好" ` 這樣的一行,就需要這麼寫 ` enclosed by '"' `

escaped by:轉義字元

lines terminated by:描述欄位的分隔符,預設情況下是tab字元(\t)

ignore number lines:用來忽略匯入檔案的開始的行。例如:number=1,則忽略匯入檔案的第一行資料。

例如:mysql> load data infile "/home/root/data.sql" replace into table campaign fields terminated by',' enclosed by '"';

2)lines 關鍵字指定了每條記錄的分隔符預設為』n』即為換行符

如果兩個欄位都指定了那fields必須在lines之前。如果不指定fields關鍵字預設值和這樣寫是相同的:fields terminated by'\t' enclosed by 』 '' 『 escaped by'\\'

如果你不指定乙個lines子句,預設值和這樣寫是相同的: lines terminated by'\n'

例如:mysql> load data infile "/root/load.txt" replace into table test fields terminated by ',' lines terminated by '/n';

5、load data infile 可以按指定的列把檔案匯入到資料庫中。 當我們要把資料的一部分內容匯入的時候,,需要加入一些欄目(列/字段/field)到mysql資料庫中,以適應一些額外的需要。比方說,我們要從access資料庫公升級到mysql資料庫的時候

下面的例子顯示了如何向指定的欄目(field)中匯入資料:

mysql> load data infile "/home/root/campaign.txt" into table campaign(id, name, creator);

6、當在伺服器主機上尋找檔案時,伺服器使用下列規則:

如果給出乙個絕對路徑名,伺服器使用該路徑名。

如果給出乙個有乙個或多個前置部件的相對路徑名,伺服器相對伺服器的資料目錄搜尋檔案。

如果給出乙個沒有前置部件的乙個檔名,伺服器在當前資料庫的資料庫目錄尋找檔案。

例如: /campaign.txt 是從伺服器的資料目錄讀取,而作為 campaign.txt 是從當前資料庫的資料庫目錄下讀取。

歡迎訂閱「k叔區塊鏈」 – 專注於區塊鏈技術學習

mysql行格式化 MySQL資料格式化語句

mysql資料格式化語句 檔案記錄體格式 序號域 名 長度位 置 填寫說明 記錄體標記 www.2cto.com 1 2填 50 話單生成日期 3 10 yyyymmdd sp企業 11 30 sp企業 同檔名中sp企業 右對齊,左補空格 業務 31 50 不包含免費業務 www.2cto.com ...

Mysql 格式化日期格式

date format date,format 根據格式串format 格式化日期或日期和時間值date,返回結果串。可用date format 來格式化date 或datetime 值,以便得到所希望的格式。根據format字串格式化date值 s,s 兩位數字形式的秒 00,01,59 i 兩位...

mysql時間格式化

date forma t date,format 根據格式串format 格式化日期或日期和時間值date,返回結果串。可用date format 來格式化date 或datetime 值,以便得到所希望的格式。根據format字串格式化date值 s,s 兩位數字形式的秒 00,01,59 i 兩...