mysql 導入dbm文件_DBM數據導入到mysql數據庫方法

本文章分享一篇關于DBM數據導入到mysql數據庫方法,有需要的同學可以參考一下本實例。

首先說明一下,我以前使用PERL,保存文件 用DBM,有5萬多條記錄,每條記錄有15個字段。現在想用MYSQL,要吧記錄導過來。

第一步,將所有的DBM記錄導入到了一個文本文件,每個字段之間用TAB分開(就是"t"),每條記錄換行結束。

第二部,將數據讀入數組,并且打開數據庫和定義預處理如下:

代碼如下

復制代碼

$dbline=file("g:/allrecord.txt"); //將數據庫記錄讀入到數組

$collen=array(8,50,80,20,20,30,3,20,1,1,20,35,35,35,2); #表里面每個字段的長度數值

$db=new i('localhost','me','mypass','allrecdb');

if(mysqli_connect_errno()) {

echo "Can not connect db!";

exit;

}

$q->query("SET names 'gb2312'");

$q="INSERT INTO customers VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";

$s=$db->prepare($q); #預定義插入記錄

//

數據庫有15個字段,為了方便導入,已經設定全部類型為CHAR,長度從1到100不等,具體等同$collen的數值;

并且沒有任何字段設置UNIQUE或者PRIMARY KEY;

在命令行用INSERT命令插入記錄成功

//

代碼如下

復制代碼

foreach($dbline as $line) {

$rec=("t",trim($line));

//這里反復測試過,$rec數組有15個值,并且我都把它strval了

// for($j=0;$j

$rec[$j]=substr($rec[$j],0,$collen[$j]);

}

for($i=0;$i

$rec[$i]=strval($rec[$i]);

}

$s->bind_param("sssssssssssssss",$rec[0],$rec[1],$rec[2],$rec[3],$rec[4],$rec[5],$rec[6],$rec[7],$rec[8],$rec[9],$rec[10],$rec[11],$rec[12],$rec[13],$rec[14]);

$s->execute();

}

$s->close();

$db->close();

?>

經過幾個小時的調試,發現任何字串超過字段長度就不能添加,所以做了如下處理。

1) 先把每個記錄的每個字段的長度進行了處理,代碼如下:

代碼如下

復制代碼

for($j=0;$j

$rec[$j]=substr($rec[$j],0,$collen[$j]);

}

2)再處理插入

代碼如下

復制代碼

$s->bind_param("sssssssssssssss",$rec[0],$rec[1],$rec[2],$rec[3],$rec[4],$rec[5],$rec[6],$rec[7],$rec[8],$rec[9],$rec[10],$rec[11],$rec[12],$rec[13],$rec[14]);

$s->execute();

這樣就可以插入記錄了。

目前剩下的問題是,任何帶有漢字的記錄,都不能插入(在命令行可以)。

查了資料,在命令行alter database crm character set 'gb2312',在腳本查詢前加入$db->query("SET names 'gb2312'")

都沒用。

也沒找到my.ini去改default-character-set=gb2312

難道php5.5暫時不支持中文?

MYSQL太多稀奇古怪的提示,解決不了問題,所有裝上了SQLITE,在命令行導入文本記錄,發現了問題:

1)某些字段中存在換行符,但是在任何文本編譯器中不換行或者不顯示。這樣會在導入的時候,1行變成2行,列參數自然不對了。

解決方案: 用str_replace($line,char(13));把每行內的換行符替換掉,然后把所有記錄存入tmp.txt

2)再進行命令行的導入

代碼如下

復制代碼

sqlite3>.import tmp.txt customers

sqlite3> count(*) from cusomers;

57491

顯示導入成功。

可見,批量導入的時候,一定要處理好那些隱藏的特殊字符。

由于時間關系,沒有測試MYSQL的情況。晚上有空再確認一下同樣方案是否可行。

f68f2add0b68e4f9810432fce46917b7.png

本文原創發布php中文網,轉載請注明出處,感謝您的尊重!

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/385923.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/385923.shtml
英文地址,請注明出處:http://en.pswp.cn/news/385923.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

大牛手把手教你!2021Java最新大廠面試真題

引言 眾所周知,軟件系統有三高:**高并發、高性能、高可用。**三者既有區別也有聯系,門門道道很多,全面討論可以大戰三天三夜。 高并發對于Java開發者來說都不陌生,每年天貓雙十一,秒殺大促等場景阿里都穩…

高通8155車載芯片_WEY來“摩卡”云首秀,搭載高通8155芯片

本期亮點“咖啡”一詞源自埃塞俄比亞的一個名叫卡法的古鎮,在希臘語中“Kaweh”的意思是“力量與熱情“,而摩卡咖啡代表著創新和更多可能性。摩卡咖啡是由濃縮咖啡、牛奶、鮮奶油及巧克力糖漿制成的“巧克力咖啡”,相比于其他制作方法&#x…

大牛深入講解!高并發你真的理解透徹了嗎

前言 最其實不管什么時候,找工作都跑不了面試。目前很多小編都做了面試手冊了,那就是別人家的孩子都有糖了,作為一個自覺的小編,必須搞。 容我先絮叨一下,制作這個面試手冊差不多花了3個多星期時間,過程還…

太厲害了!2021年互聯網大廠Java筆經

開頭 設計模式是一套被反復使用的、多數人知曉的、經過分類編目的、代碼設計經驗的總結。使用設計模式是為了重用代碼、讓代碼更容易被他人理解、保證代碼可靠性。在項目中合理地運用設計模式可以完美地解決很多問題,每種模式在現實中都有相應的原理來與之對應&…

fritzing導入元件_超屌的 fritzing 新建元件

標簽:fritzing 有多好,用了才知道,但是通常會遇到一個問題,他的元件庫不一定夠用,這時候就得自己做元件了,但是搜了一下網上沒有相關的教程啊。算了,去官網看英文吧。。然后官網的幫助見 http:/…

java將字節數組轉換成字符串,面試心得體會

1. 前言 大家都知道,Postman是一個非常受歡迎的API接口調試工具,提供有Chrome擴展插件版和獨立的APP,不過它的很多高級功能都需要付費才能使用。 如果你連Postman都還沒有用過,不妨可以先體驗一番。 Postman官網: h…

linux mysql 刪除表腳本_linux shell腳本自動刪除mysql表前3個月的數據

RDS有一個數據庫表tbl_online表,有6千萬數據,需要清理,保留3個月。步驟如下:創建月表將需要刪除的數據寫入月表刪除數據優化表shell如下:#!/bin/bashbase"rdsxx.mysql.rds.aliyuncs.com"#前3個月的日期months_agodate -d "-3 …

java將數組中的數據修改,深度集成!

京東Java研發崗一面(基礎面,約1小時) 自我介紹,主要講講做了什么和擅長什么 springmvc和spring-boot區別 Autowired的實現原理 Bean的默認作用范圍是什么?其他的作用范圍? 索引是什么概念有什么作用&am…

mysql oracle 表空間大小_最簡單的查詢表空間的使用量、剩余量的方法 - Focus on Oracle、MySQL and GNU/Linux...

比起用其它的視圖寫長長的一段腳本、簡便多了、據說從7.x到11g都可以用sm$ts_used & sm$ts_freeidle> select * from sm$ts_used;TABLESPACE_NAME BYTES------------------------------ ----------SYSAUX 256573440UNDOTBS1 8323072USERS 3211264SYSTEM 50678988…

java小游戲畢業論文,你不懂還不學?

1. Spring 特點 Spring 主要有如下特點: 輕量級:Spring 是非侵入式,其中的對象不依賴 Spring 的特定類;控制反轉(IoC):通過 IoC,促進了低耦合,一個對象依賴的其他對象通…

mysql shell 回車換行_【shell mysql 導出數據到csv腳本,完美解決亂碼轉義符等問題】-費元星...

#!/bin/bash#author:feiyuanxing 【既然笨到家,就要努力到家】#date:2017-12-05#E-Mail:feiyuanxinggmail.com#TARGET:一鍵導出mysql數據到 csv#CopyRight:本腳本遵守 未來星開源協議(http://feiyuanxing.com/kaiyuanxieyi/kaiyua…

java小游戲源代碼資源,一招徹底弄懂!

BATJ大廠面經 阿里七面面經 螞蟻金服面經及答案 京東面經 百度美團順豐京東阿里面經 面試題精選 Java面試手冊 MySQL55題及答案 多線程面試題及答案 設計模式面試題及答案 消息中間件面試題及答案 并發編程面試題及答案 面試資料整理匯總 最后 總而言之,面試官問…

python學法用法 自動刷分器_Python selenium模擬手動操作實現無人值守刷積分功能...

def DaTi(): driver.get(url https://pc.xuexi.cn/points/exam-practice.html) elem_juje WebDriverWait(driver,100).until(EC.presence_of_element_located((By.XPATH,//div[class"q-header"]))) juje elem_juje.get_attribute(innerText) # 在每日答題中&#…

java小程序小游戲代碼貪吃蛇,附高頻面試題合集

One:JVM實踐思維圖(完整版) Two: 走近Java 概述 Java技術體系Java發展史Java虛擬機家族:(Sun Classic/Exact VM、HotSpot VM、Mobile/Embedded VM、BEA JRockit/IBM J9 VM、BEA Liquid VM/Azul VM、Apache…

mysql創建存儲時覆蓋_總結到位的MySQL 的覆蓋索引與回表

兩大類索引使用的存儲引擎:MySQL5.7 InnoDB聚簇索引* 如果表設置了主鍵,則主鍵就是聚簇索引* 如果表沒有主鍵,則會默認第一個NOT NULL,且唯一(UNIQUE)的列作為聚簇索引* 以上都沒有,則會默認創建一個隱藏的row_id作為聚…

java小程序開發平臺,隔壁都饞哭了

01 阿里面試題之MySQL 之前的阿里面試題都有做總結,具體面試題內容整理成了文檔,本文是針對MySQL系列的,所以下面只展示了自己第一次面試阿里時被吊打問到的一些MySQL難題 請解釋關系型數據庫概念及主要特點?請說出關系型數據庫…

java小程序查看器,成功拿到offer

架構筑基 大家都知道,性能一直是讓程序員比較頭疼的問題。當系統架構變得復雜而龐大之后,性能方面就會下降,如果想成為一名優秀的架構師,性能優化就是你必須思考的問題。 所以性能優化專題從JVM底層原理到內存優化再到各個中間件…

java小程序設計一個國旗點擊國旗唱國歌,看這篇足矣了!

工作的前兩年 如果你不能拼爹,或者不想拼爹,最好的方法是拼實力。 合抱之木,生于毫末;九層之臺,起于壘土;千里之行,始于足下。 所以,你必須要從基層做起。當然,所謂的基…

java client_java中HttpClient的使用

HttpClient的使用步驟:1、使用Apache的HttpClient發送GET和POST請求的步驟如下:1. 使用幫助類HttpClients創建CloseableHttpClient對象. 2. 基于要發送的HTTP請求類型創建HttpGet或者HttpPost實例.3. 使用addHeader方法添加請求頭部,諸如User-Agent, Accept-Encodin…

java小項目實例,成功入職阿里

我聽到的一些發聲 你們賺的錢已經可以了: 我一個發小是做土木工程的,上海大學博士,參與很多著名建筑的工程,但是從薪資上看,還不如一些稍微像樣的公司的6年多的高級開發。為什么?這就是行業的紅利&#xf…