GVKun编程网logo

如何将数组存储到mysql中?(如何将数组存储到mysql中)

14

这篇文章主要围绕如何将数组存储到mysql中?和如何将数组存储到mysql中展开,旨在为您提供一份详细的参考资料。我们将全面介绍如何将数组存储到mysql中?的优缺点,解答如何将数组存储到mysql中

这篇文章主要围绕如何将数组存储到mysql中?如何将数组存储到mysql中展开,旨在为您提供一份详细的参考资料。我们将全面介绍如何将数组存储到mysql中?的优缺点,解答如何将数组存储到mysql中的相关问题,同时也会为您带来android – 如何将唯一的GCM注册标识存储到MySQL中、byte数组存储到mysql、c# – 有一种简单的方法将数组存储到SQL Server CE数据库中的单个列中吗?、hive的本地安装部署,元数据存储到mysql中的实用方法。

本文目录一览:

如何将数组存储到mysql中?(如何将数组存储到mysql中)

如何将数组存储到mysql中?(如何将数组存储到mysql中)

有没有一种方法可以将数组存储到mysql字段中?我正在创建一个评论评分系统,因此我想存储用户ID数组以防止进行多次投票。我将创建一个新表,其中包含评论ID和对此评论进行投票的用户ID数组。然后,我将加入评论表和该表,并检查当前用户ID是否存在于选民数组或注释中。如果是这样,将禁用投票图标。我想我会避免以这种方式在循环中使用mysql查询。

您碰巧知道更好的方法吗?

答案1

小编典典

您始终可以序列化阵列并将其存储在数据库中。
PHP序列化

然后,可以在需要时反序列化数组。

android – 如何将唯一的GCM注册标识存储到MySQL中

android – 如何将唯一的GCM注册标识存储到MySQL中

我正在设置Google Cloud Messaging机制的服务器端,使用 MySQL存储移动应用提供的注册ID. Google可以发出最多4k个注册码,我被迫将其存储在TEXT字段中.所有的好,到目前为止,问题是我必须处理这样的情况:

>用户登录到应用程序
>该应用从google请求注册ID
>应用程序将新的注册ID发送到应用服务器
>服务器存储该注册ID并将其链接到当前登录的用户
>该用户注销并且新用户登录
>应用程序向服务器发送与之前相同的注册ID
>服务器必须能够看到注册ID已经在数据库中,但是链接到另一个用户
>服务器取消与先前用户的注册ID的链接,并将其链接到新的登录用户

所以问题是我必须确保数据库中注册ID的唯一性,但是我不能为该TEXT字段添加一个UNIQUE索引.

我可以想到的可能的解决方案:

>计算注册ID的哈希值,并强制该哈希值是唯一的,但可能会有冲突.
>我可以存储唯一的设备ID和注册ID,并强制该设备ID是唯一的.我看到的问题是,我不知道多久可以是一个Android设备ID,我认为有些情况下它是不可用的.
>我可以在每次接收到新的注册ID时执行搜索,但我认为这最终会导致非常差的性能.

我相信我不是唯一面对这个问题的人,但是我找不到好的解决方案.有什么想法可以解决这个问题吗?

解决方法

>为了存储注册ID本身最好使用VARBINARY(4096)列.如果您使用高效的字符集(例如UTF-8)对注册ID进行编码,它比TEXT更有效. >为了有效的搜索,您还应该有一个额外的索引散列列(BINARY(32)) – 我们使用SHA-256摘要算法从注册ID获取32字节的散列.哈希列不一定是唯一的.碰撞应该是非常罕见的,即使发生这种情况,您的查询将给您少量的共享相同哈希值的注册ID,因此它不会影响测试您的Java代码中的哪一个(如果有的话)实际上匹配您要查找的注册ID. >如果您选择存储唯一的设备ID并根据它进行搜索,我建议您为每个设备分配自己的标识符.该标识符可以是(例如)BIGINT(在java中很长).您可以要求应用程序在首次启动时呼叫服务器以获取唯一的标识符.您可以将其存储在设备的外部存储上,以便卸载应用程序然后重新安装的设备仍然具有相同的标识符.

byte数组存储到mysql

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数据库中的单个列中吗?

c# – 有一种简单的方法将数组存储到SQL Server CE数据库中的单个列中吗?

我在这里回顾了可能的答案(对于 PHP,我认为): http://www.lateralcode.com/store-array-database/但我无法找到序列化/反序列化的C#.net版本.

这是否与上面的链接中显示的方式相同,或者在给定环境的情况下,我应该使用完全不同的方法吗?

我只是不想为我的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的本地安装部署,元数据存储到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中的相关知识,请在本站寻找。

本文标签: