这篇文章主要围绕如何将数组存储到mysql中?和如何将数组存储到mysql中展开,旨在为您提供一份详细的参考资料。我们将全面介绍如何将数组存储到mysql中?的优缺点,解答如何将数组存储到mysql中
这篇文章主要围绕如何将数组存储到mysql中?和如何将数组存储到mysql中展开,旨在为您提供一份详细的参考资料。我们将全面介绍如何将数组存储到mysql中?的优缺点,解答如何将数组存储到mysql中的相关问题,同时也会为您带来android – 如何将唯一的GCM注册标识存储到MySQL中、byte数组存储到mysql、c# – 有一种简单的方法将数组存储到SQL Server CE数据库中的单个列中吗?、hive的本地安装部署,元数据存储到mysql中的实用方法。
本文目录一览:- 如何将数组存储到mysql中?(如何将数组存储到mysql中)
- android – 如何将唯一的GCM注册标识存储到MySQL中
- byte数组存储到mysql
- c# – 有一种简单的方法将数组存储到SQL Server CE数据库中的单个列中吗?
- hive的本地安装部署,元数据存储到mysql中
如何将数组存储到mysql中?(如何将数组存储到mysql中)
有没有一种方法可以将数组存储到mysql字段中?我正在创建一个评论评分系统,因此我想存储用户ID数组以防止进行多次投票。我将创建一个新表,其中包含评论ID和对此评论进行投票的用户ID数组。然后,我将加入评论表和该表,并检查当前用户ID是否存在于选民数组或注释中。如果是这样,将禁用投票图标。我想我会避免以这种方式在循环中使用mysql查询。
您碰巧知道更好的方法吗?
答案1
小编典典您始终可以序列化阵列并将其存储在数据库中。
PHP序列化
然后,可以在需要时反序列化数组。
android – 如何将唯一的GCM注册标识存储到MySQL中
>用户登录到应用程序
>该应用从google请求注册ID
>应用程序将新的注册ID发送到应用服务器
>服务器存储该注册ID并将其链接到当前登录的用户
>该用户注销并且新用户登录
>应用程序向服务器发送与之前相同的注册ID
>服务器必须能够看到注册ID已经在数据库中,但是链接到另一个用户
>服务器取消与先前用户的注册ID的链接,并将其链接到新的登录用户
所以问题是我必须确保数据库中注册ID的唯一性,但是我不能为该TEXT字段添加一个UNIQUE索引.
我可以想到的可能的解决方案:
>计算注册ID的哈希值,并强制该哈希值是唯一的,但可能会有冲突.
>我可以存储唯一的设备ID和注册ID,并强制该设备ID是唯一的.我看到的问题是,我不知道多久可以是一个Android设备ID,我认为有些情况下它是不可用的.
>我可以在每次接收到新的注册ID时执行搜索,但我认为这最终会导致非常差的性能.
我相信我不是唯一面对这个问题的人,但是我找不到好的解决方案.有什么想法可以解决这个问题吗?
解决方法
byte数组存储到mysql
public int AddVeinMessage(byte[] data)//插入数据库
{
using (BCSSqlConnection = new MySqlConnection(strConn))
{
try
{
dbHelper = new DBHelper(BCSSqlConnection);
StringBuilder sbSql = new StringBuilder();
sbSql.Append("insert into table1(");
sbSql.Append("data)");
sbSql.Append(" values (");
sbSql.Append(" ?data)");
string strInsertSql = sbSql.ToString();
MySqlCommand cmd = dbHelper.GetSqlStringCommond(strInsertSql);
dbHelper.AddInParameter(cmd, "?data", MySqlDbType.VarBinary, FINGERDATA);
return dbHelper.ExecuteNonQuery(cmd);
}
catch (Exception ex)
{
System.Windows.Forms.MessageBox.Show("添加失败了" + ex.Message);
return 0; //表示数据库异常
}
finally
{
dbHelper.CloseSqlConnection(); //关闭数据库
}
}
}
从数据库中取出
public DataTable SelectVeinMessage()
{
using (BCSSqlConnection = new MySqlConnection(strConn))
{
try
{
StringBuilder sbSql = new StringBuilder();
sbSql.Append("select data from table");
//设置MYSQL查询语句用于查询符合查询条件的记录
string strSql = sbSql.ToString();
dbHelper = new DBHelper(BCSSqlConnection);
//调用DBHelper类中的GetSqlStringCommond()方法将返回的MySqlCommand对象赋给cmd
MySqlCommand cmd = dbHelper.GetSqlStringCommond(strSql);
// dbHelper.AddInParameter(cmd, "?FINGERDATA", MySqlDbType.VarChar, FINGERDATA);
//调用DBHelper类的ExecuteDataSet()方法
DataTable dt = dbHelper.ExecuteDataTable(cmd);
//返回DataTable对象dt
return dt;
}
catch (Exception e)
{
throw new Exception(e.Message);
}
finally
{
dbHelper.CloseSqlConnection();
}
}
}
DataTable dt = mm.SelectVeinMessage1();
byte[] TemplateBuff = new byte[512];
for (int i = 0; i < dt.Rows.Count; i++)
{
TemplateBuff = (byte[])dt.Rows[i]["data"];
}
c# – 有一种简单的方法将数组存储到SQL Server CE数据库中的单个列中吗?
这是否与上面的链接中显示的方式相同,或者在给定环境的情况下,我应该使用完全不同的方法吗?
我只是不想为我的9个不同数组中的每一个中的12个值中的每一个都有一堆不同的列,所以如果有另一种方法来实现这一点(转换为byte []等),我不仅仅是愿意听.
如果它有帮助,那么数组将是简单的string []数组.
解决方法
var a = String.Join(",",arrays); //or aim is to provide a unique separator,//i.e which won't be the part of string values itself. var a= String.Join("~~",arrays);
然后像这样取回:
var arr = a.Split(','); //or split via multiple character var arr = a.Split(new string[] { "~~" },StringSplitOptions.None);
hive的本地安装部署,元数据存储到mysql中
要想使用Hive先要有hadoop集群的支持,使用本地把元数据存储在mysql中。
mysql要可以远程连接:
可以设置user表,把localhost改为%,所有可连接。记住删除root其他用户,不然可能会有影响
update user set host=''%'' where host=''localhost'';
Hive的安装部署:
1、解压tar文件
2、修改文件:
修改conf/下面的文件:
cp hive-env.sh.tempalte hive-env.sh
配置hive-env.sh文件:
1、配置HIVE_HOME路径
2、配置HIVE_CONF_DIR路径
在hdfs中新建
/user/hive/warehouse
/tmp 连个文件夹,并修改权限为同组可写
hdfs dfs -chmod g+w /tmp
hdfs dfs -chmod g+w /user/hive/warehouse
配置元数据到mysql中:
需要mysql的驱动jar包
cp mysql-connector-java-5.1.27-bin.jar /hive/lib
在hive/conf目录中创建一个hive-site.xml文件,更改红色部分:
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://hadoop102:3306/metastore?createDatabaseIfNotExist=true</value>
<description>JDBC connect string for a JDBC metastore</description>
</property>
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
<description>Driver class name for a JDBC metastore</description>
</property>
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>root</value>
<description>username to use against metastore database</description>
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>root</value>
<description>password to use against metastore database</description>
</property>
<property>
<name>hive.cli.print.current.db</name>
<value>true</value>
<description>Whether to include the current database in the Hive prompt.</description>
</property>
<property>
<name>hive.cli.print.header</name>
<value>false</value>
<description>Whether to print the names of the columns in query output.</description>
</property>
</configuration>
-------------------------------------
更改默认数据仓库位置:
hive默认的数据仓库位置在:/user/hive/warehouse路径下面, 在仓库目录下,没有对默认的数据库 default 创建文件夹。如果某张表属于 default数据库,直接在数据仓库目录下创建一个文件夹。
可以修改配置文件更改位置:红色部分,切记修改路径的权限为同组可写,配置文件hive-site.xml
<property>
<name>hive.metastore.warehouse.dir</name>
<value>/user/hive/warehouse</value>
<description>location of default database for the warehouse</description>
</property>
配置表头显示、数据显示:配置文件hive-site.xml
<property>
<name>hive.cli.print.header</name>
<value>true</value>
</property>
<property>
<name>hive.cli.print.current.db</name>
<value>true</value>
</property>
Hive运行日志配置:
Hive 的 log 默认存放在/tmp/hadoop/hive.log 目录下(当前用户名下)
修改 hive 的 log 存放日志到/opt/module/hive/logs
修改/opt/module/hive/conf/hive-log4j.properties.template 文件名称为 hive-log4j.properties
在 hive-log4j.properties 文件中修改 log 存放位置
hive.log.dir=/opt/module/hive/logs
关于如何将数组存储到mysql中?和如何将数组存储到mysql中的介绍现已完结,谢谢您的耐心阅读,如果想了解更多关于android – 如何将唯一的GCM注册标识存储到MySQL中、byte数组存储到mysql、c# – 有一种简单的方法将数组存储到SQL Server CE数据库中的单个列中吗?、hive的本地安装部署,元数据存储到mysql中的相关知识,请在本站寻找。
本文标签: