2017年5月25日 星期四

mysql commad 常用

登入 mysql
mysql -u root -p

列出所有資料庫
show databases;

列出所有資料表
show tables;

參考:http://note.drx.tw/2012/12/mysql-syntax.html

2017年5月9日 星期二

MSSQL Bulk Insert 匯入文字檔

用 Bulk Insert 載入文字檔實例

假設我們有一個文字檔, 要寫入 table: StList 中, 且 StList schema 如下:

CREATE TABLE StList
(
StFName nvarchar(50) NOT NULL,
StLName nvarchar(50) NOT NULL,
StEmail nvarchar(100) NOT NULL
)
go


文字檔型態一:

Kelly中文,Reynold,kelly@reynold.com
John鮰,Smith,bill@smith.com
Sara,Parker,sara@parker.com
這個例子較簡單, 因此我們直接用下述語法:

BULK INSERT StList FROM 'c:\TxtFile2.txt' WITH (FIELDTERMINATOR = ',',CODEPAGE = '65001')


文字檔型態二:

"Kelly","Reynold","kelly@reynold.com"
"John","Smith","bill@smith.com"
"Sara","Parker","Parker"

這個例子就比較麻煩了, 若直接用以下語法,

BULK INSERT StList FROM 'c:\TxtFile2.txt' WITH (FIELDTERMINATOR = '","',CODEPAGE = '65001')
因為每個欄位的資料前後都有 double quote, 若直接用 "," 分開, 將造成"最前面"和"最後面"的double quote 拿不掉, 也就是會變成:

"Kelly Reynold kelly@reynold.com"
"John Smith bill@smith.com"
"Sara Parker Parker"
可改用以下程式處理:

BULK INSERT StList FROM 'c:\TxtFile2.txt' WITH (FIELDTERMINATOR = '","')
UPDATE StList SET StFName = SUBSTRING(StFName,2,DATALENGTH(StFName)-1) -- 【"Kelly】 變 【Kelly】
UPDATE StList SET StEmail = SUBSTRING(StFName,1,DATALENGTH(StEmail )-1) -- 【kelly@reynold.com"】 變 【kelly@reynold.com】

PS:若沒有支援 65001 參考:https://docs.microsoft.com/en-us/sql/t-sql/data-types/nchar-and-nvarchar-transact-sql

參考來源:http://cbw0731.pixnet.net/blog/post/24994515