如何替換MYSQL數(shù)據(jù)庫中l(wèi)ongtext類型內(nèi)容中的某個(gè)詞
有一個(gè)表:wp-posts ,此表里有一個(gè)字段:post_content(為longtext類型),其實(shí)就是網(wǎng)站的文章內(nèi)容,我想在此字段里搜索:"a.com",并將其更新為"b.com”update wp-posts set post_content=replace(post_content,'a.com','b.com')
如何在mysql中插入longtext類型文本
我這有一篇?jiǎng)e人的, 你先用用吧(未經(jīng)過測試,但應(yīng)該沒問題)
// MySql2.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
//在DBMS中線要?jiǎng)?chuàng)建數(shù)據(jù)庫www,table www,file字段數(shù)據(jù)類型用LONGTEXT即可測試
//測試文件c:\test.iso,你可以找任何一個(gè)文件修改為即可,我找的是一個(gè)exe程序,修改為test.iso而已
//最大測試過加入文件大小為650M(一個(gè)正真的iso文件)
//注意:還要修改my.ini文件中的max_allowed_packet字段,我設(shè)置的是
//max_allowed_packet = 1024M
//#define host "localhost" //mysql server
//#define username "root"
//#define password "674800"
//#define database "test"
//int port = 3306;
#include <Winsock2.h>
#include <stdio.h>
#include <mysql.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#define host "localhost" //mysql server
#define username "root"
#define password "674800"
#define database "www"
int port = 3306;
#pragma comment(lib,"libmysql.lib")
//得到文件的大小(字節(jié)數(shù))
int get_file_size(char *path, off_t *size)
{
struct stat file_stats;
if(stat(path, &file_stats))
return -1;
*size = file_stats.st_size;
return 0;
}
int main(int argc, char *argv[])
{
char *filename=NULL;
off_t size;
MYSQL *conn=NULL;
MYSQL_RES *res_set=NULL;
MYSQL_ROW row;
MYSQL_FIELD *field=NULL;
int i, flag;
char *sql; //sql語句
FILE *fp;
char *buf;
int n=256;
char *end;
unsigned long *length;
/* if (argc != 2)
{
printf("Usage: %s srcfilen", argv[0]);
exit(1);
}
*/
filename = "c:\test.iso";
if ((get_file_size(filename, &size)) == -1) //得到文件的大小
{
perror("get file size" );
exit(1);
}
if ((buf = (char *)malloc(sizeof(char)*(size+1))) == NULL)
{
perror("malloc buf" );
exit(1);
}
if ((fp = fopen(filename, "rb" )) == NULL) //讀文件
{
perror("fopen file" );
exit(1);
}
if ((n = fread(buf, 1, size, fp)) < 0) //讀文件失敗
{
perror("fread file" );
exit(1);
}
sql = (char *)malloc(sizeof(char)*n*2+256); //2n+1+strlen(other sql)
if (sql == NULL)
{
perror("malloc sql" );
exit(1);
}
conn = mysql_init(NULL);//生產(chǎn)一個(gè)mysql對象
if (conn == NULL)
{
printf("init mysql, %sn", mysql_error(conn));
exit(1);
}
if ((mysql_real_connect(conn, host, username, password, database, port, NULL, 0)) == NULL) //連接服務(wù)器
{
printf("connect mysql, %sn", mysql_error(conn));
exit(1);
}
strcpy(sql, "insert into www(id, name, file) values(NULL, 'peter', " );
end = sql;
end += strlen(sql); //point sql tail
//convert NUL(ASCII 0)、'n'、'r'、''’、'''、'"'和Control-Z and so on
*end++ = ''';
end += mysql_real_escape_string(conn, end, buf, n);
*end++ = ''';
*end++ = ')';
flag = mysql_real_query(conn, sql, (unsigned int)(end-sql));
if (flag != 0)
{
printf("insert failed, %sn", mysql_error(conn));
exit(1);
}
if ((mysql_real_query(conn, "SELECT file FROM www where id=1", 31)) != 0)
{
printf("insert failed, %sn", mysql_error(conn));
exit(1);
}
res_set = mysql_store_result(conn);
fclose(fp);
fp = NULL;
fp = fopen("c:\123.iso", "wb" );
while ((row = mysql_fetch_row(res_set)) != NULL)
{
length = mysql_fetch_lengths(res_set);
for (i=0; i<mysql_num_fields(res_set); i++)
{
fwrite(row[0], 1, length[0], fp);
//printf("%sn",row[0]);
}
}
fclose(fp);
mysql_close(conn);
free(sql);
free(buf);
sql = NULL;
return 0;
}
mysql庫數(shù)據(jù)導(dǎo)入到oracle庫中時(shí)遇到問題,mysql里面是VARCHAR(30)類型,oracle里面是VARCHAR2(40)類型
什么問題呢?是數(shù)據(jù)類型還是長度?
如果是數(shù)據(jù)類型的話
mysql、sqlserver是用varchar來存儲(chǔ)變回長字符數(shù)答據(jù)的
而oracle是使用varchar2來存儲(chǔ)變長字符數(shù)據(jù)的
這個(gè)你要習(xí)慣。
至于長度,主要看字符集吧。
一般情況下,如果你mysql和oracle都使用的是同一字符集,那么oracle的40長度肯定能存儲(chǔ)mysql的30的數(shù)據(jù)
但是如果你在mysql用的是gbk,但是在oracle中使用utf8,那么可能就悲劇了(一般也不會(huì)出現(xiàn)這種情況吧),可能需要重新安裝oracle,更改字符集。
而如果mysql用的是utf8,但是在oracle中使用gbk,那么沒有問題(可能性比較大的情況)
MySQL中的LONGTEXT類型怎么使用
問題很簡單,就是rncreate tables table_1(rnid int primary key auto_incrment,rncontent LONGTEXT(1000000)rn);rn和rnalter table table_1 modify content LONGTEXT(100000)這兩個(gè)語句會(huì)出錯(cuò)。rn這個(gè)LONGTEXT到底怎么用啊,不是說有4GB的空間嗎,但是我不加括號直接用LONGTEXT類型,卻被截?cái)嗔藬?shù)據(jù)。搞得數(shù)據(jù)不完整了。rnrn到底怎么樣可以完全使用這4GB的空間啊。不加括號就可以,下面的內(nèi)容復(fù)制自MYSQL手冊,多看手冊有好處:
一個(gè)專BLOB或TEXT對象的最大尺寸由其類型屬?zèng)Q定,但是你能在客戶與服務(wù)器之間是實(shí)際傳輸?shù)淖畲笾涤煽捎玫膬?nèi)存數(shù)量和通訊緩沖區(qū)的大小來決定。你能改變消息緩沖區(qū)大小,但是你必須在服務(wù)器和客戶兩端做。見10.2.3 調(diào)節(jié)服務(wù)器參數(shù)。
例如許多文件系統(tǒng)不支持大于2G的文件,如何能存儲(chǔ)4G的字段呢,這個(gè)是操作系統(tǒng)的限制。
LONGTEXT不用加括號指定長度,如果被截?cái)嗫赡苁瞧渌鼏栴},LONGTEXT肯定夠長了
相關(guān)推薦:
刑事涉外程序(涉外刑事案件審理流程)
委托公證錯(cuò)誤賠償(房屋公證人需要承擔(dān)什么責(zé)任)
強(qiáng)制執(zhí)行賠償(民事賠償強(qiáng)制執(zhí)行期限)
拆遷賠償城市戶口(城市戶口可以享受農(nóng)村拆遷補(bǔ)償嗎)
刑事處罰算前科嗎(坐牢5年出來還算有前科嗎)