1. 程式人生 > >LINUX下從mysql檔案匯出後標題合併

LINUX下從mysql檔案匯出後標題合併

這兩天在做資料匯出,真實折磨死了,記錄下來。匯出的格式是csv。

由於我們的資料量比較大,匯出到excel時,幾百萬上千萬行的時候用程式去寫入肯定是不行,所以自然就想到了mysql的outfile功能,但是這個方面好像沒有匯出標題的功能,只能匯出資料,然後我就想先匯出資料,然後再在linux下將標題插入到檔案第一行,思路是沒問題,就是到來倒去,標題寫進去了,但是放到window下就亂碼了。

如果將資料從mysql匯出的時候,用utf8格式,在window下就亂碼,在linux下顯示正常,如果在mysql匯出時用gbk,那麼在linux下就亂碼,真的時候頭痛的問題。

我們肯定是要保證在window下用excel開啟正常,所以,匯出時用gbk。現在問題是如何將標題插入到檔案中去並且還能在window下開啟。

之前用正常的變數接收插入檔案,怎麼搞都亂碼,後來查到linux有個iconv命令,可以將檔案轉換為不同的格式,然後想到了一個折中的辦法。

就是將標題寫入一個臨時檔案,然後再將檔案轉換為gbk的格式檔案,然後再將轉換後的檔案內容取出放到一個變數,然後再將變數寫入匯出的資料檔案,問題終於解決。

下面是所有的程式碼:

mysql匯出:注意 

character set gbk
IF(p_pagesize>100000) THEN
    SET @exe_sql = CONCAT('select ',@grid_field,' INTO OUTFILE ''',p_file_name,'
.csv'' character set gbk FIELDS TERMINATED BY '','' ENCLOSED BY ''\"'' LINES TERMINATED BY ''\n'' ',@maintable,' ',@jointable,' ',@grid_whr,' ',@sort); ELSE SET @exe_sql = CONCAT('select ',@grid_field,' INTO OUTFILE ''',p_file_name,'.csv'' character set gbk FIELDS TERMINATED BY '','' ENCLOSED BY
''\"'' LINES TERMINATED BY ''\n'' ',@maintable,' ',@jointable,' ',@grid_whr,' ',@sort, ' LIMIT ', @lmt, ',', `p_pagesize`,' '); END IF; -- select @exe_sql; PREPARE stmt FROM @exe_sql; EXECUTE stmt

linux下合併的程式碼:

#!/bin/sh
#LANG=latin1
#export LC_ALL=UTF-8
databaseName=$1
fileName=$2
headCol=$3
# sed -i '1i '${headCol} /home/dwgl/test3.csv
#echo ${headCol} > /home/dwgl/out.log
# linux default utf-8 format
echo ${headCol}>/home/dwgl/download/${fileName}_1.csv # UTF-8 format
# from utf-8 convert to gb18030
iconv -f utf-8 -t gb18030 /home/dwgl/download/${fileName}_1.csv > /home/dwgl/download/${fileName}_2.csv
# read first line to variable
headCol2=`sed -n '1p' /home/dwgl/download/${fileName}_2.csv`
# insert format head to outfile
mv /home/mysql/mysql_data/data/${databaseName}/${fileName}.csv /home/dwgl/download/
sed -i '1i '${headCol2} /home/dwgl/download/${fileName}.csv
tar -cvf /home/dwgl/download/${fileName}.tar /home/dwgl/download/${fileName}.csv
gzip /home/dwgl/download/${fileName}.tar
# mv ${fileName}.tar /home/dwgl/download/
rm -f /home/dwgl/download/${fileName}_*.csv

相關推薦

LINUXmysql檔案匯出標題合併

這兩天在做資料匯出,真實折磨死了,記錄下來。匯出的格式是csv。 由於我們的資料量比較大,匯出到excel時,幾百萬上千萬行的時候用程式去寫入肯定是不行,所以自然就想到了mysql的outfile功能,但是這個方面好像沒有匯出標題的功能,只能匯出資料,然後我就想先匯出資料,然後再在linux下將標題插入到檔

0到1導出LinuxMySQL中含有中文數據的文件(not complete)

MySQL Linux 註明版本號:這是剛安裝完MySQL的時候的樣子:首先解決secure_file_priv的問題:由於文件是只讀的,所以只能在root模式下來改。使用vi命令編輯mysqld.cnf:在文件結尾加上這一行,保存並退出。現在再看看:未完待續。參考鏈接:1.mysql命令之二:查看m

linux操作mysql、nginx,vim操作,檔案許可權設定等

inux下操作mysql、nginx,vim操作,檔案許可權設定等 #在Linux系統下,預設所有系統配置檔案都在/etc這個路徑下的 #Linux環境下安裝mysql資料庫 ##1、切換到root許可權下,採用yum命令安裝 同時安裝mariadb的客戶端和服務端

linux安裝mysql(rpm檔案安裝)

資料庫包下載: https://www.mysql.com/downloads/ 在GPL開原協議的社群開源版裡邊下載     我們用mysql community server裡邊的         其中workbench是客戶

Linux安裝MySQL設置root密碼

方法一:最簡單的方法,也是安裝完mysql後,系統提示的方法。使用mysqladmin來完成。 shell> mysqladmin -u root password “newpwd” shell> mysqladmin -u root -h host

linux執行mysql的sql檔案(maridb資料庫也可以,親測可行)----遷移資料庫

linux下執行mysql的sql檔案 可以利用WinSCP工具將window系統下的sql檔案上傳至伺服器,也可使用資料庫工具(推薦Nvaicat)遠端連線操作資料庫 mysql -uroot -proot -- 登入並選擇資料庫(需要前提建立好資料庫) 進入到mys

linux檢視mysql的配置檔案

首先先看看你的mysql在哪,通過which命令 which mysql 顯示出目錄比如我的是下面這個 /usr/bin/mysql 接下來就可以針對這個目錄通過一些命令檢視配置檔案在哪了,

Linux安裝MySQL出現“ls: /var/lib/mysql/*.pid: 沒有那個檔案或目錄”

環境 RedHat Linux 9 + VWWare 8.0 + SSH 3.2.9 + Putty 0.62 + MySQL 3.2 + MySQL 5.5 問題 Linux下安裝MySQL出現如

LinuxMysql用命令執行sql檔案

1,將要匯入的.sql檔案移至bin檔案下,這樣的路徑比較方便2,同上面匯出的第1步3,進入MySQL:mysql -u 使用者名稱 -p如我輸入的命令列:mysql -u root -p    (輸入同樣後會讓你輸入ySQL的密碼)4,在MySQL-Front中新建你要建的

Linux安裝mysql無法啟動的解決方法

 在Linux下安裝完mysql後,mysql服務無法啟動,總是failer。      這個不是因為mysql安裝失敗,而是因為啟動了SELinux。      進入/etc/selinux/conf

3 Linux 的 .sh 檔案在 windows 修改無法執行

問題描述 原因 解決方法 問題描述 在 Windows 下寫的 shell 指令碼,在 Linux 下無法執行,錯誤一般都是:bad interpreter: No such file or directory 或者 unexpected e

Linux安裝Mysql

ibm get col cli nbsp bench -s sudo clas 1. sudo apt-get install mysql-server 2. sudo apt-get isntall mysql-client 3. sudo apt-get instal

linux下設置mysql apache 開機自動啟動

etc init 改變 表示 mysql support 一行 pre server 1 #將mysql啟動腳本放入所有腳本運行目錄/etc/rc.d/init.d中 2 cp /lamp/mysql-5.0.41/support-files/mysql.server

Linux安裝Mysql(RPM安裝)

rpm安裝 技術分享 sql安裝 data track rpm包 用戶 系統 username 一、去官網下載本次安裝須要的mysql版本號。我們須要安裝的是5.1版本號的且centos系統是64位的。所下面載的是MySQL-community-5.1.73-1.rhe

linux 安裝mysql-5.7.16

unit sda etc tro tables rac 用戶密碼 username force 1.解壓tar -xvf mysql的包 tar -xvf mysql-5.7.16-1.el6.x86_64.rpm-bundle.tar(mysql 官網中即可找到)2.

奪命雷公狗---linux NO:34 linuxmysql安裝與連接

初始 目錄 -1 分享 希望 網上 groupadd mysql安裝 libaio mysql 其實是可以通過 yum install mysql-server 來進行安裝的,不過考慮到很多服務器自身帶寬的原因,其實用的不是特別的多,看實際情況來定。。。 當然yum

Linuxtomcat無法啟動/啟動無法用過127.0.0.1:8080訪問解決方案

clas java require com 自己的 bug jpda force comm 啟動tomcat情況如下: [email protected]:/usr/local/tomcat/apache-tomcat-8.5.20/bin# ./catalina

Linux安裝mysql(離線安裝和在線安裝)

命令 安裝 this glib leg rpm /usr node star 一:在線安裝mysql 1、首先檢測一下,mysql之前有沒有被安裝   命令:rpm -qa | grep mysql 2、刪除mysql的命令: rpm -e --nodeps `rpm -q

linux操作mysql

lin mysql linux下 mes 設置 word 表名 ble 操作 1.命令行登錄mysql用戶mysql -h ip -u username -p passwordmysql -hip -uusername -ppassword(可以沒有空格)2.顯示所有的數據

linux啟動mysql提示:Timeout error occurred trying to start MySQL Daemon

任務 自帶 lean linu 使用 custom 方式 files 一個 啟動 mysqld 時經過很長時間顯示 Timeout error occurred trying to start MySQL Daemon. 終端進入 mysql 時顯示 ERROR 2002