mysql文件导入现有数据库表中

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysql文件导入现有数据库表中相关的知识,希望对你有一定的参考价值。

我有一个.sql文件,想导入mysql数据库中的一张表中,但是,2表的字段是完全不一样的,有什么方法可以导入,我现在导入只是直接导入mysql数据库中,是否需要修改字段使2表字段匹配然后导入,那么修改后,在phpmyadmin中,应该如何操作来完成导入.另,我的.sql文件2G大,用sqlserver,editplus,dw,记事本,写字板都不能打开,用什么方法可以打开呢
记事本是打不开的,如图,其次,你的意思我没有怎么明白.比如,我需要导入mysql的数据库的文件名字叫做a.sql,有表user, 数据库中本身b.sql中有表merber,那么,我是如何具体操作,请明确一点...

记事本是可以打开的,我曾经打开过4G的文件,虽然等待了很长时间。
2个表的数据结构不一样是肯定不行的,而且.sql导出的文件是那种最基础的insert语句,所以要先转换一下。
先建一个和2g文件一样的表,然后把数据导入。
然后写个和新表一样结构的select文件,然后再导出来。
这里要考虑一下是否存在不可重复的列,比如自增ID,这个就不要导出了,不然和新表会有冲突的。
参考技术A 看你sql文件的形式了,普通编辑器一般是一次性把内容读入内存的,你文件太大 应该会卡机。用UltraEdit应该可以打开。

不知道你sql文件中有没有建表/键数据库的语句,总之先修改你现有数据表满足sql文件的格式, 然后再改成你想要的形式。

命令行形式导入操作: 在dos窗口下切换到mysql的bin目录
mysql.exe -u用户名 -p密码 数据库名 (回车)
source sql文件的绝对路径 (回车)
参考技术B 方法如下:
Linux下
均在控制台下操作。
导入数据库:
前提:数据库和数据表要存在(已经被创建)

(1)将数据表 test_user.sql 导入到test 数据库的test_user 表中
[root@test ~]# mysql -uroot
-p test < /www/web/test/test_user.sql

(2) 将数据库 test.sql 导入到 test 数据库test 中
[root@test ~]# mysql -uroot -p test
< /www/web/test/test.sql

(3)source命令不在控制台下,要进入mysql下操作
mysql> use test;
mysql>source
/www/web/test/test.sql
参考技术C 在sql里还原后打开 然后导出sql语句

最笨的办法 查询mssql 插入mysql
参考技术D 在sql里还原后打开 然后导出sql语句

最笨的办法 查询mssql 插入mysql

如何使用另一个 MySQL 表中的现有数据填充预先选择的下拉字段?

【中文标题】如何使用另一个 MySQL 表中的现有数据填充预先选择的下拉字段?【英文标题】:How to populate dropdown field pre-selected with the existing data from another MySQL table? 【发布时间】:2018-03-24 02:13:12 【问题描述】:

在我的数据库中,我有 2 个表:

为了插入数据,我有一个表单,它从表formulation 中填充下拉选项。这是配方下拉列表的插入表单的样子:

<?php
$formulation = '';
$query = "SELECT * FROM formulation";
$result = mysqli_query($connect, $query);
while ($row = mysqli_fetch_array($result)) 
    $formulation .= '<option value="' . $row["formulationID"] . '">' . $row["formulation_name"] . '</option>';

?>

<select>
    <option value="">Select formulation</option>
    <?php echo $formulation; ?>
</select>

现在我正在处理“更新”表单。但我的问题是如何使用formulation 表中的数据(如插入表单)填充“公式”字段下拉列表,但使用来自@987654330 的name 的现有formulation 值预先选择@ 桌子?像下面这张图片:

我对如何构建表单有疑问。我应该如何处理这个表格?

<?php
$output = array('data' => array());
$sql = "SELECT * FROM items";
$query = $connect->query($sql);

while ($row = $query->fetch_assoc()) 
    $output['data'][] = array(
        $row['name'],
    );

echo json_encode($output);
?>

<form action=" " method="POST">
    <div>
        <label>Name</label>
        <input type="text"><br>
        <label>Formulation</label>
        <select >
            <!--What should be the codes here? -->
        </select>
    </div>
    <button type = "submit">Save changes</button>
</form>

提前感谢您的建议。

【问题讨论】:

总体思路是更新特定项目?那么更新操作实际上更新了 items 表? 是的,你是对的。 @Solmyr 【参考方案1】:

注意:我不是mysqli 的用户,所以可能会有一些错误,但你会明白的。这不会解决更新部分,只是填充部分

由于您正在编辑某个项目,我假设您有一些东西可以获取该项目的itemID

<?php
$sql = "SELECT * FROM items WHERE itemID = ?";
$query = $connect->prepare($sql);
$query->bind_param("s", $yourItemID);
$query->execute();
$result = $query->fetch_assoc();
$itemName = $result['name'];
$itemFormulation = $result['formulation_fk'];

//now you have the name and the formulation of that certain item
?>

<form action=" " method="POST">
    <div>
        <label>Name</label>
        <input type="text" value="<?php echo $itemName; ?>"><br>
        <label>Formulation</label>
        <select >
            <?php
                $query = "SELECT * FROM formulation";
                $result = mysqli_query($connect, $query);
                while ($row = mysqli_fetch_array($result)) 
            ?>
                <option value="<?php echo $row['formulationID']; ?>" <?php echo ($row['formulationID'] == $itemFormulation) ? 'selected' : ''; ?>>
                    <?php echo $row['formulation_name']; ?>
                </option>
            <?php
                
            ?>
        </select>
    </div>
    <button type = "submit">Save changes</button>
</form>

我修改了代码以更好地适应问题,可能有错别字,请评论澄清

【讨论】:

感谢您的建议。我正在研究它以适应我现有的系统。之后我一定会告诉你的。 :) 我不确定我使用的功能,所以在需要时替换它们。【参考方案2】:

如果我理解您的问题...您必须将您的结果放入字符串中。例如:

<?php
$output = array('data' => array());
$sql = "SELECT * FROM items";
$query = $connect->query($sql);

$option = '';
while ($row = $query->fetch_assoc()) 
     $name=$row['name'],
    $option.='<option value="$name">$name</option>'

echo json_encode($output);
?>

<form action=" " method="POST">
    <div>
        <label>Name</label>
        <input type="text"><br>
        <label>Formulation</label>
        <select >
            <?=$option?>
        </select>
    </div>
    <button type = "submit">Save changes</button>
</form>

希望能帮到你

【讨论】:

这怎么知道某个物品有什么样的配方?据我所知,您在select 中嵌入了项目名称而不是配方名称 我所有的网页都使用这种方法。元素名称可以替换为另一个元素。【参考方案3】:

这应该可以解决问题:

<?php
$itemsSql = "SELECT * FROM items WHERE itemId = 5";
$itemQuery = $connect->query($sql);
$item = $itemQuery->fetch_assoc();

$formulationsSql = "SELECT * FROM formulation";
$formulationsQuery = $connect->query($sql);
$formulations = $itemQuery->fetch_assoc();
?>

<form action="updateItem" method="POST">
    <div>
        <label>Item Name</label>
        <input type="text" value="<?= $item[0]['name']; ?>"><br>
        <label>Formulation</label>
        <select>
            <?php foreach($formulations as $formulation)
            echo '<option value="'. $formulation['formulationId'].'">' .
                   $formulation['formulation_name'] . '</option>';
             ?>
        </select>
    </div>
    <button type = "submit">Save changes</button>
</form>

【讨论】:

以上是关于mysql文件导入现有数据库表中的主要内容,如果未能解决你的问题,请参考以下文章

SQLAlchemy - MySQL - 检查现有表中是不是存在行[重复]

mysql中定价表中数据的巨大连续(重新)导入和刷新

SQL Server:导入和归档每周数据

在将数据从文件插入表时,如何用 NULL 替换 NA 值?

MySQL:从另一个表中的值“修补”表上的现有数据

有没有办法将现有mssql备份文件bak格式,导入到mysql数据库中